Python else statement inside and outside while loop
本问题已经有最佳答案,请猛点这里访问。
鉴于以下Python程序,
1 2 3 4 5 6 7 8 9 10 | #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 |
输出如下:
1 2 3 4 | 13 9 11 10 9 11 9 11 |
前三个行在while循环中打印,最后一行(9 11)作为else子句的一部分再次打印。
现在,另一个变种:
1 2 3 4 5 6 7 8 9 10 | #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 |
而且,现在的输出是:
1 2 3 4 5 6 | 13 9 13 9 11 10 11 10 9 11 9 11 |
看,每个x,y对打印两次,一个是上面的print语句,一个是因为else子句。
这是否意味着第一个版本允许其他:在循环时走出去? 这不奇怪吗?
背后的原因是什么?
1
2 while_stmt ::= "while" expression":" suite
["else"":" suite]This [the
while statement] repeatedly tests the expression and, if it is true, executes the first suite; if the expression is false (which may be the first time it is tested) the suite of theelse clause, if present, is executed and the loop terminates.