我不确定当该语句位于带有子句的循环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)
对于forPython 中的循环,else当循环正常结束时,即没有break语句时,将执行该块。Acontinue无论如何都不影响它。
如果 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
我一直记得它,因为雷蒙德·赫廷格 (Raymond Hettinger) 是如何描述它的。他说应该叫它nobreak而不是else. (这也是一个很好的视频,解释了 for-else 结构的有用性)
例子:
\n\nnumbers = [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")\nRun Code Online (Sandbox Code Playgroud)\n\n当您运行上面的代码时,由于4不在列表中,因此不会循环break并且else将打印该子句。如果您添加4到列表中并再次运行它,它将break不会else打印。在大多数其他语言中,如果找到 a ,则必须添加一些哨兵布尔值 likefound和 make it ,然后仅在循环后打印语句 if is 。True4foundFalse