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

代码顺序问题

任务答案print [100*n1+10*n2+n3 for n1 in range(1,10) for n2 in range(0,10) for n3 in range(0,10) if n1 == n3]

为什么不写成print [100*n1+10*n2+n3 if n1 == n3 for n1 in range(1,10) for n2 in range(0,10) for n3 in range(0,10) ]这样呢,这个是怎么规范顺序的,又是以什么顺序运行的呢

正在回答

2 回答

## 正确代码
print [100*n1+10*n2+n3 for n1 in range(1,10) for n2 in range(0,10) for n3 in range(0,10) if n1 == n3]

这个for循环生成式的意思是:

for n1 in range(1,10):
    for n2 in range(0,10):
        for n3 in range(0,10):
            if n1==n3

而题主给出的代码:

print [100*n1+10*n2+n3 if n1 == n3 for n1 in range(1,10) for n2 in range(0,10) for n3 in range(0,10) ]

就成了:

if n1==n3:
    for n1 in range(1,10):
        for n2 in range(0,10):
            for n3 in range(0,10):

所以逻辑上不合适, 而解释器报错一般都会报: invalid syntax.

或者简单的记住,for循环生成式 是for 嵌套if.

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

python_美若天仙怪我咯 提问者

非常感谢!
2016-04-05 回复 有任何疑惑可以回复我~

先得有数才能做判断吧 个人认为是这样的

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

举报

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

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

进入课程

代码顺序问题

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