关于Python while语句的Else子句

问题:

我注意到以下代码在Python中是合法的。我的问题是为什么?有没有特定的原因?

n = 5
while n != 0:
    print n
    n -= 1
else:
    print "what the..."

回答:

只有当while条件变为false时,才会执行else子句。如果break退出循环,或者异常引发,则不会执行。
考虑它的一种方式是作为一个if / else构造关于条件:

if condition:
    handle_true()
else:
    handle_false()

类似于循环结构:

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()

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Else clause on Python while statement

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 43 = 47