
上QQ阅读APP看书,第一时间看更新
3.3.5 循环中的else语句
Python中,while语句和for语句可以带else子句,语法格式为:

或

说明:
1)在while循环中,当while循环条件为False时执行else子句。
【例3-32】 在while循环中定义else示例。

运行结果为:


分析上述程序的运行过程,当循环条件i<3变成False时,程序执行了while循环语句的else子句。也就是说,程序在结束循环之前,会先执行else子句。从这个角度来看,else子句其实没有太大的价值,将else子句直接放在循环体之外,执行结果完全相同。即上面的代码可改为如下形式:

循环中的else子句是Python的一个很特殊的语法(其他编程语言通常不支持),else子句的主要作用是编写更优雅的Python代码。
2)在for循环中,当把元组或列表的所有元素遍历一次之后,执行else子句。在else子句中,迭代变量的值依然等于最后一个元素的值。
【例3-33】 在for循环中定义else子句示例。

运行结果为:

3)while-else或for-else循环通常与break语句配合使用,才能体现出else语句的特别功能。注意,不管for循环还是while循环,如果使用break语句强行终止循环,程序将不会执行else子句。
【例3-34】 编写一个程序,在i==3时跳出循环,而且此时for循环不会执行else语句。

上面程序运行结果为:


【例3-35】 求出2~10之间的质数。

运行结果如图3-16所示。

图3-16 例3-35运行结果