![Python程序设计教程(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/531/34752531/b_34752531.jpg)
3.2.3 break语句和continue语句
break语句可以用在while和for循环中。在循环进行过程中,如果某个条件被满足(一般通过if语句判断是否满足执行break语句的条件),则可以通过break语句立即终止本层循环。如果break语句在具有两层循环嵌套的内层循环中,则只终止内层循环,进入到外层循环的下一条语句继续执行。
【例3-9】 求一个自然数除了自身以外的最大约数。
分析:一个整数除了自身以外的最大因子不会超过其除以2的整数商。这样程序可以将其除以2后的整数商作为循环控制变量的初始值。利用循环控制变量去除要判断的整数,找到第一个可以整除该整数的循环控制变量即为最大约数,不需要继续往下判断了,用break语句提前终止该循环;否则让循环控制变量减1,继续循环去判断是否已经找到一个约数。
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image932.jpg?sign=1738957422-TXbzkkLlYkui5BBZTPAkzcyuxPFZVScV-0-61a0eaf4e4cecb451c50151783866a7c)
程序运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image933.jpg?sign=1738957422-sW02kEHdvsxnj7CfwqaYslSgIWcJfPWu-0-aab636e2d718fca0c33efe4c40e00fd8)
程序的执行过程:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image934.jpg?sign=1738957422-ZTaBkqCsl5eT3tBrm6QVtUFfr66ctcng-0-7a9206304fc849d275e55874d5f5c0d1)
进入循环体:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image935.jpg?sign=1738957422-PTU2uTokmGyxW06odvApuYUE0aSI5ucq-0-97b1ed0b6d82013e603b2789dfa9a0dc)
输出:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image936.jpg?sign=1738957422-93vdkeqKLWdaB4qbZEGDrV332UTB30S1-0-ed785c0494cce1a248f9b7d2e90792f0)
continue语句可以用在while和for循环中。在循环体执行过程中,如果遇到continue语句,程序会跳过本次循环的循环体剩余语句,回到循环开始的地方重新判断是否进入下一次循环。
break语句与continue语句的主要区别如下。
(1)break语句一旦被执行,则整个当前循环将被终止。
(2)continue语句的执行不会终止整个当前循环,只是提前结束本次循环,跳过循环体中本次循环的剩余语句,提前进入到下一次循环。
【例3-10】 阅读以下两个程序,理解break语句和continue语句的区别。
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image937.jpg?sign=1738957422-rYv43Bw3q7cUIw2Bz43hcUemdRvcqrBv-0-1363e731faccc05f5db343152fdd3878)
程序运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image938.jpg?sign=1738957422-UGnMAum5UaHWm4uJs66yoPNVqmEFNwJh-0-512825f441a3562d41f6f7643eac4b9d)
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image939.jpg?sign=1738957422-GCkJTd0yPKuw7bE05x0JXKyclWItsJAS-0-f1ae50244c49c4cfa91ff4f07c487723)
程序运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image940.jpg?sign=1738957422-QvVgcLrr2AgvyWsQ3lkvgiHE8qEDyhW2-0-7753a3e0a526e776c6c36c19d0c2ab92)
第一种情况下,if语句里面是break语句。当触发了条件(即取到的字符串是'Null')则执行break语句,直接终止了循环,因此只输出了两个姓名Mike和Tom。
第二种情况下,if语句里面是continue语句。当触发了条件(即取到的字符串是'Null')则执行continue语句,只终止了当次循环,提前进入到下一次循环(即取得下一个字符串),因此输出了所有不是Null的姓名Mike、Tom、Apple、Betty、Amy、Dick。