Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 它应该是一个无限循环_Python_Loops - Fatal编程技术网

Python 它应该是一个无限循环

Python 它应该是一个无限循环,python,loops,Python,Loops,我用python写了一段代码。在更改代码时,我问自己应该输出什么。 我也回答自己,这应该是一个无限循环。然后我运行它。但令人惊讶的是,这不是一个无限循环。我的问题是为什么 i=0 for i in range(10): if i == 5: i -=1 else: print(i) i+=1 它在python中非常基本。请参考range()函数生成的列表。这里的范围(5)表示[0,1,2,3,4] 因此,i逐个遍历列表[0,1,2,3,4

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

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

它在python中非常基本。请参考
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
的上一个值,而是取决于列表的对象。 进一步的研究可能会对您有所帮助。

range(10)
生成序列
0,1,…,9
,您的
i
变量在循环中从中获取其值。当
i==5
时执行
i-=1
的事实不会使
i
5
来回切换到
4
,因为
i
的值来自
范围(10)
。当
i==5
时发生的情况是,当您执行
i-=1
时,它变为
i==4
,但在下一次迭代中,
i
将从
范围
中取下一个值,即
6
,依此类推,直到循环结束

这是一个无限循环:

i=0
while i < 10:
    if i == 5:
        i -=1
    else:
        print(i)
    i+=1
i=0
当我<10时:
如果i==5:
i-=1
其他:
印刷品(一)
i+=1

为什么您认为它是一个无限循环?循环变量从
范围(10)
中获取值,因此它应该运行10次。你只需跳过打印5。