代码顺序问题
任务答案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) ]这样呢,这个是怎么规范顺序的,又是以什么顺序运行的呢
任务答案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) ]这样呢,这个是怎么规范顺序的,又是以什么顺序运行的呢
2016-03-30
## 正确代码 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.
举报