【问题标题】:Why does 'continue' and 'break' give the same results? [closed]为什么“继续”和“中断”会给出相同的结果? [关闭]
【发布时间】:2019-04-24 19:24:44
【问题描述】:

在我的代码中,关键字“继续”和“中断”给出相同的输出。是什么原因?

第一个代码:

x = 0
while x < 5:
    if x == 2:
        break
    print(x)
    x += 1

输出: 0 1

第二个代码:

x = 0
while x < 5:
    if x == 2:
        continue
    print(x)
    x += 1

输出: 0 1

在第一个代码中,我希望得到相同的输出。在第二个中,我希望输出是这样的: 输出: 0 1 3 4

【问题讨论】:

  • 我建议看看 continue 做了什么,因为我不认为它做你认为它做的事情。
  • @brunns:你是对的,第二个永远不会终止,但是如果你在解释器中运行这段代码,你会看到 0、1,然后只是一个闪烁的光标:)

标签: python continue


【解决方案1】:

continue 停止循环的当前迭代并立即进入循环的下一个迭代,跳过循环体的其余部分。

在您的while 循环中,主体的其余部分包括语句x += 1。所以x 永远不会变成3,它停留在2。从那时起,if x == 2: 测试始终成功,并且它不断跳过增量,并在一遍又一遍地重复该循环时卡住。

for 循环中,它会跳过循环体的剩余部分,然后从正在循环的迭代器中获取下一项。如果您将循环更改为:

for x in range(5):
    if x == 2:
        continue
    print(x)

你会得到你期望的输出。递增x 不是在循环体中完成的,而是由for 语句本身完成的。它在每次迭代开始时自动发生。所以continue 只会跳过print 语句。

【讨论】:

  • 您能解释一下 for 循环中的“继续”关键字吗?我不认为我已经理解它在 for 循环中的作用。
  • 我添加了关于 forwhile 的不同之处的说明。
  • 很好的解释!我现在明白了这些差异。我需要意识到增量是由for 本身完成的,这与while 不同。谢谢!
【解决方案2】:

python 中的continue 关键字告诉程序跳过循环的其余内容并跳转到下一次迭代。

在您的第二个代码中,您会注意到程序永远不会停止执行。那是因为一旦x == 2True,程序将点击continue 然后跳转到下一个迭代......它再次检查x 是否再次等于2,并将点击continue。这是一个无限循环。

【讨论】:

    【解决方案3】:

    break 立即退出循环,continue 停止当前迭代直接开始下一次迭代(不退出循环)。

    【讨论】:

      【解决方案4】:

      第二个代码示例永远不会终止,因为continue 会重新启动while 循环而不增加x

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-09
        • 2021-01-16
        • 2014-02-01
        • 2021-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多