当在循环内使用break语句时,通常是因为 “找到” 了某物或者因为某事 “发生” 了。在跳出时做一些事情是很简单的,比如 print (n) , 但是有些时候想要在没有跳出之前做些事情,那么怎么判断呢? 可以使用布尔变量,在循环前将其设定为False, 跳出后设定为True 。 然后再使用if 语句查看循环是否跳出了:
<pre name="code" class="python">broke_out = False
for x in set:
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时执行。让我们用这种方法重写刚才的例子:
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!")
注意,下限是81(不包括81)以测试else子句, 执行程序的结果是,打印出“Didn't find it!” ,如果将下限改为80,则将打印出 81 。
for 和 while循环中都可以使用continue、 break语句和else子句。