应该是一个无限循环

时间:2019-11-16 04:10:42

标签: python loops

我用python写了一个代码。在更改代码时,我问自己应该输出什么。 我也回答自己应该是​​一个无限循环。然后我运行它。但是令人惊讶的是,这并不是一个无限循环。我的问题是为什么?

i=0
for i in range(10):
    if i == 5:
        i -=1
    else:
        print(i)
    i+=1

2 个答案:

答案 0 :(得分:1)

这在python中非常基本。供您参考,range()函数将生成一个列表。这里range(5)的意思是[0,1,2,3,4]

因此i一次遍历列表[0,1,2,3,4]i并没有像while循环条件那样从一开始就初始化的值。

for i in [0,1,2,3,4]:
  if i==5:
    i-=1
  else:
    print(i)
  i+=1

您的代码和此代码执行类似的操作。 i的下一个值不取决于i的前一个值,而是取决于列表的对象。 进一步的研究可能对您有所帮助。

答案 1 :(得分:0)

range(10)生成序列0,1,...,9i变量从该序列中获取其值。您在i -= 1时执行i == 5的事实不会使i不断地从5切换到4,因为{{1} }从i获取其值。当range(10)变为i == 5时会发生什么,而当您执行i == 4时,i -= 1将从i取下一个值,即range,依此类推,直到循环结束。

这是一个无限循环:

6