Python else语句内部和外部while循环[重复]

Posted

技术标签:

【中文标题】Python else语句内部和外部while循环[重复]【英文标题】:Python else statement inside and outside while loop [duplicate] 【发布时间】:2014-09-13 15:54:35 【问题描述】:

给定以下 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 和一次由于 else 子句。 这是否意味着第一个版本允许 else: 到 while 循环之外?这不是很奇怪吗? 背后的原因可能是什么?

【问题讨论】:

这个问题显示/询问 else: of while 和 else: of if 子句的区别 【参考方案1】:

while 循环在 Python 中可以有 elses。来自while statements:

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

这个 [while 语句] 反复测试表达式,如果为真,则执行第一个套件;如果表达式为假(可能是第一次测试),则执行 else 子句套件(如果存在)并终止循环。

【讨论】:

澄清@arshajii 的回答:关键区别在于,在第一种情况下,else 子句附加到 while 循环,而在第二种情况下附加到 if 语句。 但是即使没有 while 的 "else" ":",它的行为也是一样的,对吧?

以上是关于Python else语句内部和外部while循环[重复]的主要内容,如果未能解决你的问题,请参考以下文章

初学python随笔——控制和循环语句

Python while 循环中使用 else 语句

自学Python2.8-条件循环和其他语句(if else while for)

Python3 循环_break和continue语句及循环中的else子句

Python入门教程第56篇 循环进阶之while…else语句

Python 循环语句