
3.3.4 break语句和continue语句
在执行while或者for循环语句时,只要满足循环条件,循环体就会一直执行。但是,有时可能希望在满足某个条件时强制结束循环。Python提供了两种强制结束当前循环体的办法:break语句和continue语句。并且通常将其放在选择结构中,以实现在满足条件的情况下结束循环的目的。
1.退出循环语句break
如果需要在某种条件出现时强制提前结束循环,而不是等到循环条件为False时才退出循环,就可以使用break语句来实现这个功能。break语句的语法格式为:

说明:
break语句用于跳出循环体,使循环提前结束。不管是哪种循环,一旦在循环体中遇到break语句,系统就完全结束该循环,转而执行循环结构后面的代码。
break语句一般结合if语句搭配使用。
【例3-28】 break语句使用示例。


运行结果为:

从运行结果看出,当满足条件i==2时,执行break语句,程序跳出该循环,导致循环提前结束。
另外,对于嵌套循环结构,break语句只能结束其所在的循环体,而无法结束其外循环。
【例3-29】 使用break语句跳出内循环。

运行结果如图3-13所示。从运行结果看出,每次执行内循环体时,第一次循环就遇到break语句,执行跳出所在循环体的操作,转而执行外循环体的代码。
如果想实现break语句不仅跳出当前所在循环,而且跳出外循环,可定义一个bool类型的变量。该变量用来标志是否需要跳出外循环,然后在内循环和外循环中分别使用两条break语句。
【例3-30】 使用break语句跳出整个循环结构。

程序从外循环进入内循环后,如果i等于1并且j等于1,将exit_flag设为True,并跳出内循环;接下来执行外循环剩下的语句,由于exit_flag为True,因此执行外循环的break语句跳出外循环。运行结果如图3-14所示。

图3-13 例3-29运行结果

图3-14 例3-30运行结果
2.执行下一次循环语句continue
使用break语句,可以完全终止当前循环。使用continue语句,只能终止本次循环体中剩余的代码,转而执行下一次的循环。continue语句的语法格式为:

说明:
continue语句跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
continue语句的用法与break语句一样,将其加入while或for语句中的相应位置即可。
【例3-31】 continue语句使用示例。

运行结果如图3-15所示。如果把continue语句放在所在循环体的最后一行,那么这条continue语句是没有任何意义的。

图3-15 例3-31运行结果