
4.4 break、continue和pass语句
当循环条件一直满足时,程序将会一直执行下去,就像一辆迷路的车,在某个地方不停地转圆圈。如果希望在中间离开循环,也就是for循环结束计数之前,或者while循环找到结束条件之前。有两种方法可以做到:
使用continue语句直接跳到循环的下一次迭代。
使用break完全中止循环。
另外,在Python中还有一个用于保持程序结构完整性的pass语句。下面将对break、continue和pass语句进行详细介绍。
4.4.1 break语句
break语句可以终止当前的循环,包括while和for在内的所有控制语句。以独自一人沿着操场跑步为例,原计划跑10圈,可是在跑到第2圈的时候,遇到自己的女神或者男神,于是果断停下来,中止跑步,这就相当于使用了break语句提前中止了循环。break语句的语法比较简单,只需要在相应的while或for语句中加入即可。
说明
break语句一般会结合if语句进行搭配使用,表示在某种条件下跳出循环。如果使用嵌套循环,break语句将跳出最内层的循环。
在while语句中使用break语句的形式如下:

其中,条件表达式2用于判断何时调用break语句跳出循环。在while语句中使用break语句的流程如图4.21所示。
在for语句中使用break语句的形式如下:

其中,条件表达式用于判断何时调用break语句跳出循环。在for语句中使用break语句的流程如图4.22所示。
在实例4.6中,使用for循环语句解决了黄蓉难倒瑛姑的数学题。但是,在该实例中,整合for要从0一直循环到99,尽管在循环到23时,已经找到了符合要求的数。下面将实例4.6进行改进,实现当找到第一个符合条件的数后,就跳出循环。这样可以提高程序的执行效率。

图4.21 在while语句中使用break语句的流程图

图4.22 在for语句中使用break语句的流程图
【例4.8】 解决黄蓉难倒瑛姑的数学题(for循环改进版)。(实例位置:资源包\TM\sl\04\08)
在实例4.7的最后一行代码下方再添加一个break语句,即可以实现找到符合要求的数后直接退出for循环。修改后的代码如下:

运行程序,将显示和实例4.5一样的效果,也是如图4.16所示的效果。如果想要看出实例4.8和实例4.6的区别,可以在上面第2行和第3行代码之间添加“print(number)”语句输出number的值。添加break语句后的执行效果如图4.23所示,未添加break语句时的执行效果如图4.24所示。

图4.23 添加break语句时的效果

图4.24 未添加break语句时的效果
4.4.2 continue语句
continue语句的作用没有break语句强大,它只能中止本次循环而提前进入下一次循环中。仍然以独自一人沿着操场跑步为例,原计划跑步10圈。当跑到第2圈的时候,遇到自己的女神或者男神也在跑步,于是果断停下来,跑回起点等待,制造一次完美邂逅,然后从第3圈开始继续。
continue语句的语法比较简单,只需要在相应的while或for语句中加入即可。
说明
continue语句一般会结合if语句进行搭配使用,表示在某种条件下,跳过当前循环的剩余语句,然后继续进行下一轮循环。如果使用嵌套循环,continue语句将只跳过最内层循环中的剩余语句。
在while语句中使用continue语句的形式如下:

其中,条件表达式2用于判断何时调用continue语句跳出循环。在while语句中使用continue语句的流程图如图4.25所示。

图4.25 在while语句中使用continue语句的流程图
在for语句中使用continue语句的形式如下:

其中,条件表达式用于判断何时调用continue语句跳出循环。在for语句中使用continue语句的流程如图4.26所示。

图4.26 在for语句中使用continue语句的流程图
【例4.9】 计算100以内所有偶数的和。(实例位置:资源包\TM\sl\04\09)
通过在for循环中使用continue语句实现1到100(不包括100)的偶数和,代码如下:

说明
第3行代码实现的是:当所判断的数字是奇数时,会执行第4行的continue语句,跳过后面的累加操作,直接进入下一次循环。
程序运行结果如下:
1到100之间(不包括100)的偶数和为:2450
4.4.3 pass语句
在Python中还有一个pass语句,表示空语句。它不做任何事情,一般起到占位作用。例如,在应用for循环输出1~10(不包括10)的偶数时,在不是偶数时,应用pass语句占个位置,方便以后对不是偶数的数进行处理。代码如下:

程序运行结果如下:
2 4 6 8