C:
# include <stdio.h> main() { int i; for (i=0; i<10; i++) { if (i>5) { i=i-1; printf("%d",i); } } }
蟒蛇:
for i in range(10): if i>5: i=i-1 print(i)
当我们编译C代码时,它会进入无限循环,直到永远打印5,而在Python中却没有,为什么不呢?
Python输出为:
0 1 2 3 4 5 5 6 7 8
在Python中,循环不会递增i,而是从可迭代对象(在这种情况下为list)分配值。因此,i在for循环内部进行更改不会“混淆”该循环,因为在下一次迭代i中将仅分配下一个值。
i
在您提供的代码中,当i值为6时,它将在循环中递减,以便将其更改为5,然后进行打印。在下一次迭代中,Python只需将其设置为list中的下一个值[0,1,2,3,4,5,6,7,8,9],即7,依此类推。没有更多值可使用时,循环终止。
[0,1,2,3,4,5,6,7,8,9]
当然,您在提供的C循环中获得的效果仍然可以在Python中实现。由于每个for循环都是美化的while循环,因此可以这样转换:
for (init; condition; term) ...
等效于:
init while(condition) { ... term }
然后,您的for无限循环可以用Python编写为:
i = 0 while i < 10: if i > 5: i -= 1 print i i += 1