5.5.6 循环中的 else 子句
通常,在循环中使用break是因为你“发现”了什么或“出现”了什么情况。要在循环提前结束时采取某种措施很容易,但有时候你可能想在循环正常结束时才采取某种措施。如何判断循环是提前结束还是正常结束的呢?可在循环开始前定义一个布尔变量并将其设置为False, 再在跳出循环时将其设置为True。这样就可在循环后面使用一条if语句来判断循环是否是提前结束的。
broke_out = False
for x in seq:
do_something(x)
if condition(x):
broke_out = True
break
do_something_else(x)
if not broke_out:
print("I didn't break out!")
一种更简单的办法是在循环中添加一条else子句,它仅在没有调用break时才执行。继续前面讨论break时的示例。
from math import sqrt
for n in range(99, 81, -1):
root = sqrt(n)
if root == int(root):
print(n)
break
else:
print("Didn't find it!")
请注意,为测试else子句,我将下限改成了81(不包含)。如果你运行这个程序,它将打印"Didn't find it!",因为正如你在前面讨论break时看到的,小于100的最大平方值为81。无论是在for循环还是while循环中,都可使用continue、break和else子句。
领取专属 10元无门槛券
私享最新 技术干货