"continue" 关键字在 "if" 和 "while" 循环中

"continue" keyword inside "if" and "while" loop

我正在学习 Python。我的目标是打印出 1 到 5,跳过 3,使用 while 循环、if 语句和关键字 continue。我下面的代码只打印出 1 2,而不是 1 2 4 5。

i = 1
while i <= 5:
    if i == 3:
        continue
    print(i)
    i += 1
  1. 为什么这个循环在 i == 3 时停止,而不是跳过 3 并继续 i = 4i = 5
  2. 您将如何更正此代码以使其打印 1 2 4 5 (continuing/skipping 3)?

您陷入了无限循环。当你 continue 时,你永远不会增加 i,所以它永远保持 3。

一旦达到 3,程序将不再增加 i 并将永远循环

你可以在测试前递增:

i = 0
while i < 5:
    i += 1
    if i == 3:
        continue
    print(i)

因为 continue 使您无法完成其余代码。因此,你只有一个无限循环。你可以看到,如果你 运行

i = 1
while i <= 5:
    if i == 3:
        print(i)
        continue
    print(i)
    i += 1

如果你想在这个方法中这样做,你可以在继续之前增加 i,即

i = 1
while i <= 5:
    if i == 3:
        i+=1
        continue
    print(i)
    i += 1

你的循环不会在你达到 3 时停止,而是无限期地继续,因为一旦 i 的值达到 3,你总是跳过递增 i

您需要在 continue 之前在 if 块中做一些事情,以确保您不会陷入无限循环。

要解决此问题,您可以这样做,当它不是 3 时打印该值,然后您甚至不需要使用 continue:

i = 1
while i <= 5:
    if i != 3:
        print(i)
    i += 1

但是,更快更简单的解决方案是:

for i in range(1, 5 + 1):
    if i != 3:
        print(i)

或者在 for 循环的情况下可以使用 continue 因为 for 循环将继续到下一个元素:

for i in range(1, 5 + 1):
    if i == 3:
        continue
    print(i)

只是因为,您也可以使用像这样的短(按行)(也快)解决方案:

print('\n'.join(str(i) for i in range(1, 5 + 1) if i != 3))

你有一个无限循环,当你到达i == 3时,你想跳过它,你通过使用continue来完成。 continue 表示返回到 while 条件并对其进行评估。

因为你没有自增i,语句永远为真(总是小于5),但是因为你没有改变i,所以if条件也将永远如此。你的代码无限循环。

您需要在 if 块中的 continue 之前更改 i 的值。

当你调用continue时,增量将被跳过并且i将永远停留在3