Python 中 while 循环内外的 else 语句

0 投票
1 回答
1746 浏览
提问于 2025-04-18 14:18

给定以下的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都打印了两次,一次是因为上面的print语句,另一次是因为else部分。

这是不是意味着第一个版本的else:可以在while循环外面执行?这不是很奇怪吗?

那么,这背后的原因可能是什么呢?

1 个回答

2

在Python中,while 循环可以有 else 语句。根据while 语句的说明:

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

这个 while 语句会不断检查一个条件,如果这个条件为真,就会执行第一部分的代码;如果条件为假(这可能是在第一次检查时就为假),那么如果有 else 语句,就会执行 else 部分的代码,然后循环结束。

撰写回答