为什么这个python代码无法运行无限次?

时间:2018-06-10 06:29:34

标签: python python-3.x loops for-loop

a = 3
for i in range(a):
    print(a, end = ' ')
    a +=1

它只产生输出:

3 4 5

我不明白这一点,因为每次 a 都会递增,所以循环应该永远运行。或者只能生成一次可迭代范围吗?

2 个答案:

答案 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