我用python写了一个代码。在更改代码时,我问自己应该输出什么。 我也回答自己应该是一个无限循环。然后我运行它。但是令人惊讶的是,这并不是一个无限循环。我的问题是为什么?
i=0
for i in range(10):
if i == 5:
i -=1
else:
print(i)
i+=1
答案 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,...,9
,i
变量从该序列中获取其值。您在i -= 1
时执行i == 5
的事实不会使i
不断地从5
切换到4
,因为{{1} }从i
获取其值。当range(10)
变为i == 5
时会发生什么,而当您执行i == 4
时,i -= 1
将从i
取下一个值,即range
,依此类推,直到循环结束。
这是一个无限循环:
6