【问题标题】:Infinite while loop with continue keyword带有 continue 关键字的无限 while 循环
【发布时间】:2019-02-24 18:41:56
【问题描述】:

我的问题-我不知道为什么会有一个关键字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

【问题讨论】:

  • continue 保持循环继续。 break 离开循环。

标签: python loops while-loop iteration


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    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

    【讨论】:

      【解决方案3】:

      您使用的是continue 关键字,但我认为您需要break。

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

      【讨论】:

        【解决方案4】:

        我认为这里的答案都假设 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)
        
        

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 2023-03-17
            • 2013-08-26
            • 1970-01-01
            • 2015-12-13
            • 2023-03-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-24
            相关资源
            最近更新 更多