Python中while循环内外的else语句

36 浏览
0 Comments

Python中while循环内外的else语句

这个问题已经有了答案

Python while语句中的else子句

给定以下Python程序:

#Version 1
x = 15
y = 8
while x - y > 0:
    x -= 2
    y += 1
    print x, y
    if x % y == 0: break
else:
        print x, y

输出结果为:

13 9
11 10
9 11
9 11

前三行在while循环内被打印出来,最后一行(9 11)作为else子句的一部分再次被打印出来。

现在是另一个变体:

#version 2
x = 15
y = 8
while x - y > 0:
    x -= 2
    y += 1
    print x, y
    if x % y == 0: break
    else:
        print x, y

现在的输出结果是:

13 9
13 9
11 10
11 10
9 11
9 11

看,每个x、y对被打印了两次,一次是在if语句之前的print语句,一次是因为else子句。

这是否意味着第一个版本允许else子句超出while循环?这不奇怪吗?

背后的原因是什么?

admin 更改状态以发布 2023年5月22日
0
0 Comments

在Python中,while循环可以有else语句。从while语句中可知:

while_stmt ::=  "while" expression ":" suite
                ["else" ":" suite]

这个[while语句]会反复测试表达式,如果它是真的,那么就会执行第一个代码块;如果表达式是假的(这可能是第一次测试时),并且有else子句的代码块,那么else子句的代码块就会执行并且循环就会结束。

0