![Python从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/265/27563265/b_27563265.jpg)
6.6 循环结构程序举例
循环语句主要就是在满足条件的情况下反复执行某一个操作。根据循环执行次数的确定性,循环可以分为确定次数循环和不确定次数循环。确定次数循环指循环体对循环次数有明确的定义,循环次数限制采用遍历结构中元素个数来体现,也称有限循环,在Python中称之为遍历循环(for语句);不确定次数循环被称为无限循环,在Python中用while语句实现。
6.6.1 while循环结构
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P100_43525.jpg?sign=1739298951-UhV4PeDJTW9WC4Fo49q91DmDd1dSIgii-0-4f974d8d3cd48e20d5bc4f4cf6f0eb91)
while循环判断比较简单,当条件判断为True时,循环体就会去重复执行语句块中的语句;当条件判断为False时,则终止循环语句的执行,同时去执行与while同级别的后续语句。其格式如下:
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P100_78925.jpg?sign=1739298951-zI4RV8A4Uz3R2KnA38rZOtIt30cBVyjd-0-7e4173b971e6fbc373ef3e70a4013c5b)
下面通过一个例子来看看while循环。
【例6-11】输入一个运算数,然后将这个数乘以2,循环5次。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P100_81713.jpg?sign=1739298951-1wFxGK30LhglbaJmzcNiwjZcS0SR2Z0d-0-c5b04033946943e076681e9943231150)
程序运行结果如图6-23所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P100_43494.jpg?sign=1739298951-rgRkWQZE4T8meXGTyctAJA8XCyQl8T9h-0-e7e40f706f6b81230eabe7a1fb13864e)
图6-23 循环5次结果
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P100_43517.jpg?sign=1739298951-ieY7VLNGWfjOcTg7m8ftMIlyQYI7GOJc-0-8383f4db6752ebcd01319130a335d746)
图6-24 循环5次流程图
其运行的流程图如图6-24所示。
在while中使用else语句,其格式如下:
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P100_78930.jpg?sign=1739298951-fWIYYh6jh8ZjaSVK4I4Lqi4wgvTIvTw8-0-53360d2bc69e7a3f320f72b94189cbe9)
【例6-12】输入一个小于5的数,每次加1,直到其不小于5为止。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P101_78933.jpg?sign=1739298951-87c9A7gXukhSCF1yjfRNPhRhMA8qh5CU-0-2bb0df3aca048d5b54fd4f4bcb7dd8a5)
程序运行结果如图6-25所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P101_43579.jpg?sign=1739298951-Kn4ynU0XhuySlclRNXNMya9uRlz6FK1g-0-a1859b61ac7d5484d9eb674818688a52)
图6-25 程序执行结果
6.6.2 for循环结构
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P101_43687.jpg?sign=1739298951-5pFmCVaOq05dFCYt89KEQwKkpQpTPrQb-0-55c117d1b8126cfe597aa1dfe56d7124)
for语句通常由两部分组成,一是条件控制部分,二是循环部分。for语句语法格式如下所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P101_78934.jpg?sign=1739298951-2GpSrSaJnBvYG4D7ldIrPLHIsG5XssF3-0-b80727e98285238b5d5f54d872a1fb10)
其中,“循环变量”是一个变量名称,“遍历结构”则是一个列表。在Python中for语句之所以称为“遍历循环”,是因为for语句执行的次数是由“遍历结构”中元素的个数决定的。遍历循环就是依次从“遍历结构”中取出元素,置入循环变量中,并执行对应的语句块。“遍历结构”可以是字符串、文件、组合数据类型或range()函数。else语句只在循环正常执行并结束时才执行。else语句通常是被省略的。
【例6-13】定义一个字符串,然后使用for语句遍历字符串。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P101_78935.jpg?sign=1739298951-epcnRa03Fo5qMnSzQoT7LjS5WTLluLPC-0-98b3ae45aa0007aedf663777d9568ff4)
程序运行结果如图6-26所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P101_43630.jpg?sign=1739298951-FCGdEebYZcKVY7Xe3JJjcAu96EHQ88Jt-0-1275159f86827f6ccdb471f849c5a407)
图6-26 循环遍历结果
【例6-14】定义一个链表,将链表里面的数字按大小顺序从小到大输出。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P101_78936.jpg?sign=1739298951-k1s7Y1wBXWYzDXNAoGNjIyUJ8A24XPaV-0-534a8679f8d4ef521319e8c22c55e283)
程序运行结果如图6-27所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P102_43696.jpg?sign=1739298951-aFrrGPbqegqrSJR65jq618IQGhsQwtiE-0-5c9f558acc25ccbfbf22d7a2cee2c00f)
图6-27 排序结果
6.6.3 break和continue语句
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P102_43813.jpg?sign=1739298951-JReQ1qRaMWBtozc2cqmy9b06HKVSbw4K-0-04bad72fbe0d2f6126c1cb028883480a)
在程序运行过程中,根据程序的目的,有时需要程序在满足另一个特定条件时跳出本次循环,或者跳出本次循环去执行另外的循环。在Python中要实现循环的自由转场就要用到两个辅助保留字:break和continue,它们用来辅助控制循环。
break语句可以在循环过程中直接退出循环,而continue语句可以提前结束本轮循环,并直接开始下一轮循环。这两个语句通常都必须配合if语句使用。
要特别注意,不要滥用break和continue语句。break和continue会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break和continue语句,都可以通过改写循环条件或者修改循环逻辑,去掉break和continue语句。
有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以按Ctrl+C组合键退出程序,或者强制结束Python进程。
1. break语句
【例6-15】在银行取钱的时候,经常看见输入密码只有三次机会,如果三次密码都输错了,那么就输入不了了。我们都知道,这是通过循环来判断账号与密码是否匹配,如果输入了对的密码,将使用break跳出循环。break语句可以在循环过程中直接退出循环。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P102_78941.jpg?sign=1739298951-uslRcTfVMPBBEQE3nnKQGYVixsFqama5-0-4ab5c17214a2123e96f16b75548d8508)
程序运行结果如图6-28所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P102_43774.jpg?sign=1739298951-QybaAxxI9sNXjTwhLyXOx0Hf6tytCgGx-0-d17826585714832795b5ff3afb64a927)
图6-28 登录账号结果
2. continue语句
continue语句可以提前结束本轮循环,并直接开始下一轮循环。
【例6-16】在数字匹配游戏中,可以清晰地感受到break与continue的不同,当匹配的数字是4时,在结束循环时,输出的是数字5。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P102_78939.jpg?sign=1739298951-eOoc1GdkFfqSLCjcBtRgS1YyTzDp6fLy-0-a434789d56e594e4e88d4af1310c1153)
程序运行结果如图6-29所示。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P103_43826.jpg?sign=1739298951-izR5LND2bhz9djF81PEF7IXWjiuBwVQe-0-b31d83ada57a0c80a52e2093fcd6e5e3)
图6-29 字符匹配结果