a = 3
for i in range(a):
print(a, end = ' ')
a +=1
它只产生输出:
3 4 5
我不明白这一点,因为每次 a 都会递增,所以循环应该永远运行。或者只能生成一次可迭代范围吗?
答案 0 :(得分:4)
你在cthon中使用c / c ++ / c#for
语法。
在c / c ++ / c#中,你在for语法中有一个条件:
for (var i= 0; i<100;i++) # this is checked each time you come back here, incrementing
# the i will skip some runs and change how often the for is done
蟒蛇for
更像是foreach
:
for i in range(3):
==&GT;
foreach(var k in new []{0,1,2}) # it takes a fresh "k" out every time it comes here
{ ... }
如果您修改k
,它仍然只会运行3次。
答案 1 :(得分:2)
它与程序源代码的解释方式有关。 range(a)
将在循环体之前执行,生成一个可生成3, 4, 5
的可迭代对象。 a
稍后会被修改,但不会影响range(a)
,因为它已被执行。以下将做你想做的事,但现在它是一个愚蠢的程序:
a = 3
i = a
while i < a:
print(a, end = ' ')
a += 1
i += 1