当continue
语句位于带有else
子句的for
循环中时,我不确定它是如何解释的。你知道吗
如果条件为真,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")`
如果我从列表中删除“spam”,现在条件总是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")
您的
else
部分将在这两种情况下执行。else
当条件不满足时循环终止时执行的部分找到了。哪个是代码中发生的事情。但是它也可以在没有continue
语句的情况下工作。你知道吗那么break语句的else部分呢,break语句的else部分将仅在以下情况下执行:
对于Python中的
for
循环,else
块在循环正常完成时执行,即没有break
语句。一个continue
对它没有任何影响。你知道吗如果for循环由于
break
语句而结束,那么else
块将不会执行。如果循环正常退出(没有break
),那么else
块将被执行。你知道吗从docs:
我总是记得这件事,因为雷蒙德·赫廷格describes it。他说它应该被称为
nobreak
,而不是else
。(这也是一个很好的视频,解释了for else构造的有用性)示例:
运行上述代码时,由于
4
不在列表中,因此循环将不会break
,else
子句将打印出来。如果您将4
添加到列表中并再次运行,它将break
,else
将不会打印。在大多数其他语言中,您必须添加一些sentinel boolean,如found
,并使其成为True
如果您找到一个4
,那么如果found
是False
,则只打印循环后面的语句。你知道吗相关问题 更多 >
编程相关推荐