为了账号安全,请及时绑定邮箱和手机立即绑定

这么写怎么错了?

print [x for x in range(999) for x/100==x%10]

正在回答

2 回答

哇,楼主好思路呀,不过有两个小问题:

print [x for x in range(999) for x/100==x%10]

第一: x/100==x%10 , 这个语句是逻辑判断 而不是成员资格判断(如: x in range(999)) , 所以不能用for, 应该用 if.

第二, x/100==x%10, 在 x 为0,10,20,30,40,50,60,70,80,90 是也是成立的。

所以楼主的代码不能得到正确的结果,稍加修改就可以了:

##正确代码:
print [x for x in range(999) if x/100==x%10 and x>100]
## 这个结果不包括 999, 所以再稍作修改:
print [x for x in range(1000) if x/100==x%10 and x>100]

不过,这一节 就是为了练习多层for 循环, 所以 正常的答案是:

print [x*100+y*10+z for x in range(1,10) for y in range(0,10) for z in range(1,10) if x==z]

不过正常答案略无聊。。。

1 回复 有任何疑惑可以回复我~
#1

氵天天天天氵 提问者

逻辑判断和成员判断的区别和用法在哪里有啊?好像没有学过的印象。
2016-03-30 回复 有任何疑惑可以回复我~
#2

清波 回复 氵天天天天氵 提问者

in 成员判断, == < > != 逻辑判断。 并不是说 成员判断前面不能加 if, 不管什么判断返回的都是bool值, 只是在 这个生成式中 一般都是 for in , if 逻辑判断。
2016-03-31 回复 有任何疑惑可以回复我~

print [x for x in range(100,1000) if x/100==x%10]

按你的思路可以这样写也能获得可以通过的结果,出错的原因有两个:range的范围要求是三位数,还有就是 x/100==x%10应该是一个条件表达式。此外,注意题目的要求,用三层的for循环,print [x*100 + y*10 + z for x in range(1,10) for y in range(0,10) for z in range(0,10) if x == z ],这样写会比较好些。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

这么写怎么错了?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信