Python:while循环中“else”的目的

Python: purpose of “else” in while loop

本问题已经有最佳答案,请猛点这里访问。

我的问题是为什么在while循环中存在诸如"else"子句之类的东西。 例如,我的代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
a = 100
turns = 0
while a > 0:
    if func(a, b): #Function returns boolean value
        a -= 1
        turns += 1
    else:
        a -= 2
        turns += 1
else:
    print(turns)

问题是,这与下面的语法有什么不同?

1
2
3
4
5
6
7
8
9
10
a = 100
turns = 0
while a > 0:
    if func(a, b): #Function returns boolean value
        a -= 1
        turns += 1
    else:
        a -= 2
        turns += 1
print(turns)

不同之处在于它如何处理循环的异常退出,例如 a break

1
2
3
4
5
while True:
    break
else:
    print("not printed")
print("printed")

这同样适用于循环体内引发的异常。