while condition:
handle_true()
else:
# condition is false now, handle and go on with the rest of the program
handle_false()
例如:
while value < threshold:
if not process_acceptable_value(value):
# something went wrong, exit the loop; don't pass go, don't collect 200
break
value = update(value)
else:
# value >= threshold; pass go, collect 200
handle_threshold_reached()
for k in [2, 3, 5, 7, 11, 13, 17, 25]:
for m in range(2, 10):
if k == m:
continue
print 'trying %s %% %s' % (k, m)
if k % m == 0:
print 'found a divisor: %d %% %d; breaking out of loop' % (k, m)
break
else:
continue
print 'breaking another level of loop'
break
else:
print 'no divisor could be found!'
只有当
while
条件变为false时,才会执行else
子句。如果break
超出循环,或者引发异常,则不会执行该异常。一种方法是将其视为条件的if/else构造:
类似于循环构造:
例如:
如果您正常退出一个块,则通过命中循环条件或从try块的底部落下来执行
else
子句。如果从块中break
或return
或引发异常,则不会执行not。它不仅适用于while和循环,还适用于try块。你通常会在一些地方发现它,在这些地方,你通常会提前退出一个循环,而离开循环的末尾是一个意外/不寻常的情况。例如,如果在列表中循环查找值:
作为对
Is there a specific reason?
的回应,这里有一个有趣的应用程序:打破多级循环。这就是它的工作原理:外部循环的末尾有一个中断,因此它只能执行一次。但是,如果内部循环完成(找不到除数),那么它将到达else语句,并且永远不会到达外部中断。这样,内部循环中的中断将从两个循环中中断,而不仅仅是一个循环。
对于
while
和for
循环,在结尾执行else
语句,除非使用break
。在大多数情况下,有更好的方法可以做到这一点(将其包装成函数或引发异常),但这是可行的!
相关问题 更多 >
编程相关推荐