3.2.6 嵌套循环中的break和continue语句
前面介绍的break语句只在一重循环中使用。在例3-13的源程序example3_13.py中,虽然出现了嵌套循环,但是这个例子中的break语句实际上放在外层循环中,与内层的for循环一样,共同作为外层循环的语句体,所以该break语句明显与内层循环没有关系。如果执行了该break语句,将直接终止外层while循环。
如果break语句在具有两层循环嵌套的内层循环中,则只终止内层循环,然后进入外层循环的下一条语句继续执行。
【例3-14】 程序反复接收自然数的输入直到输入-1为止,对每输入的一个自然数,计算并输出该自然数除了自身以外的最大约数。
分析:程序提示用户输入一个自然数,如果该数不为-1,则根据例3-8的方法计算并输出该自然数除自身外的最大约数;然后提示用户再输入一个自然数,利用循环重新计算并输出该自然数除自身外的最大约数;直到输入为-1时终止该程序。
程序代码:
程序的一次运行结果:
程序的执行过程:
【例3-15】 寻找并打印输出所有三位数的素数。
分析:可以用循环取出从100到999的每一个数赋给变量i,对每个给定的i,用循环语句判断它是否为素数,若为素数,则打印输出。需要循环的嵌套。
程序代码:
程序运行结果:
实际上,不管有多少层的循环嵌套,一个break语句的执行,只是终止以该break语句作为循环体,且从break语句往外层搜索离该break语句最近的while或for循环。
在多层循环中,continue语句的作用范围与break语句类似。不管有多少层的循环嵌套,一个continue语句的执行,只是跳过continue语句所在本层循环中循环体的剩余语句。
【例3-16】 修改例3-10中的要求,对列表['Mike','Tom','Null','Apple','Betty','Null','Amy','Dick']中每个非“Null”的单词依次输出其组成的字母,如果遇到字母i,则不输出。
程序代码:
程序运行结果: