continue 语句中的其他部分如何工作?

1 python for-loop for-else

我不确定当该语句位于带有子句的循环continue内时如何解释该语句。forelse

如果条件为真,则将break从循环中退出for并且else部分将不会被执行。如果条件为 False,则else部分将被执行。

但是,声明呢continue?我测试了一下好像语句continue到达后,该else部分就会被执行。这是真的??这是一个代码示例:

# when condition found and it's `true` then `else` part is executing :

edibles = ["ham", "spam", "eggs","nuts"]
for food in edibles:
    if food == "spam":
        print("No more spam please!")
        continue
    print("Great, delicious " + food)

else:
    print("I am so glad: No spam!")
print("Finally, I finished stuffing myself")`
Run Code Online (Sandbox Code Playgroud)

如果我从列表中删除“垃圾邮件”,现在条件总是false并且从未找到,但仍然else执行该部分:

edibles = ["ham","eggs","nuts"]
for food in edibles:
    if food == "spam":
        print("No more spam please!")
        continue
    print("Great, delicious " + food)

else:
    print("I am so glad: No spam!")
print("Finally, I finished stuffing myself")
Run Code Online (Sandbox Code Playgroud)

Cha*_*les 5

对于forPython 中的循环,else当循环正常结束时,即没有break语句时,将执行该块。Acontinue无论如何都不影响它。

\n\n

如果 for 循环因某个break语句而结束,则 thenelse块将不会执行。如果循环正常退出(no break),则该else块将被执行。

\n\n

来自文档

\n\n
\n

当与循环一起使用时,else 子句与 try 语句的 else 子句比 if 语句有更多共同点:try 语句\xe2\x80\x99s else 子句在没有异常发生时运行,而循环\ xe2\x80\x99s else 子句在未发生中断时运行。

\n
\n\n

我一直记得它,因为雷蒙德·赫廷格 (Raymond Hettinger) 是如何描述它的。他说应该叫它nobreak而不是else. (这也是一个很好的视频,解释了 for-else 结构的有用性)

\n\n

例子:

\n\n
numbers = [1,2,3]\nfor number in numbers:\n    if number == 4:\n        print("4 was found")\n        break\nelse:\n    print("4 was not found")\n
Run Code Online (Sandbox Code Playgroud)\n\n

当您运行上面的代码时,由于4不在列表中,因此不会循环break并且else将打印该子句。如果您添加4到列表中并再次运行它,它将break不会else打印。在大多数其他语言中,如果找到 a ,则必须添加一些哨兵布尔值 likefound和 make it ,然后仅在循环后打印语句 if is 。True4foundFalse

\n