繁体   English   中英

带有 continue 关键字的无限 while 循环

[英]Infinite while loop with continue keyword

我的问题 - 我不知道为什么有一个关键字continue ,它应该保留 3 的值并继续前进。 事实上,我有一个无限循环——也就是说,它使程序崩溃。


tab = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
i = 0
while i < len(tab):
    print(tab[i])
    if tab[i] == 3:
        continue
    i+=1

看起来您正在尝试遍历列表,直到找到3然后break 做这样的事情:

items = [1,2,3,4,5]
for item in items:
   if item == 3:
       break

关键字continue将传递到循环的下一次迭代,其中break将停止循环。

continue关键字继续循环的下一次迭代。

在你的情况下,它会阻止语句i+=1被执行。

这是发生的事情:

  1. 循环通过 0,1,2 就好了
  2. 当它评估tab[i] = 3它继续循环的下一次迭代,并且i+=1永远不会执行,因此i保持 3 并且永远不会增加。 它永远这样做。

如果要退出循环,可以使用break语句而不是continue

有关更多信息,您可以在此处阅读continue关键字: https : //docs.python.org/3/tutorial/controlflow.html

您正在使用continue关键字,但我认为您想要break

您的代码将永远运行,因为i从不迭代超过 3。一旦i == 4 ,它就会进入您的 if 语句并继续循环。 由于它继续,它从不重复。

我认为这里的答案都假设 OP 想要使用break而不是continue

但是,如果您需要在 while 循环中使用 continue,请确保在 continue 语句上方有一个递增/递减操作,因为 continue 语句跳转到 while 循环的顶部,在您的情况下, i仍然是 3。

do-while 循环中的continue语句分别跳转到循环底部。 因此,在您的情况下,您有两个选择,要么在 continue 之上递增,要么使用 for 循环。

tab = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
i = -1
while i < len(tab):
    i += 1
    print(tab[i])
    if tab[i] == 3:
        continue
    

或者

for i in range(0,15):
    if i == 3:
       continue
    print(i)

因为您使用的是跳过其余代码的continue关键字。 一旦 i 达到 3,它就会跳过i+=1命令。 看来您想使用关键字break 你也可以这样做:

for i in tab:
    print(i)
    if i == 3:
        break

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM