![Python语言从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/679/33643679/b_33643679.jpg)
6.2 while循环语句
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/79_02.jpg?sign=1739425386-8o1hq2fcRQJCXfI1lbXcr1GAgGwGghsu-0-f9a1e368b5648ef509070659059b962b)
↑扫码看视频
while循环语句的特点和for循环语句类似。在本节中,通过具体实例的实现过程,详细讲解while循环语句的知识与使用方法。
6.2.1 基本的while循环语句
while语句用于循环执行某段程序,以处理需要重复处理的相同任务。在Python语言中,虽然绝大多数的循环结构都是用for循环语句来完成的,但是while循环语句也可以完成for语句的功能,只不过不如for循环语句来得简单明了。
while循环语句主要用于构建比较特别的循环。while循环语句最大的特点是循环次数不确定,当不知道语句块或者语句需要重复执行多少次时,使用while语句是最好的选择。当while的表达式为真时,while语句重复执行一条语句或者语句块。使用while语句的基本格式如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/79_03.jpg?sign=1739425386-u1KSFIKD50lrJdini7lZBtSVyy4hbFRY-0-8d29cd977348180df74835a778aa7314)
在上述格式中,当condition为真时会循环执行后面的执行语句,一直到条件为假时才退出循环。如果第一次条件表达式为假,那么会忽略while循环。如果条件表达式一直为真,会一直执行while循环。也就是说,会一直循环执行while循环中的执行语句部分,直到当条件不能被满足为假的条件时才退出循环,并执行循环体后面的语句。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_01.jpg?sign=1739425386-UV8Gk2yJV4QIWJVTgyOG2ULdJZQWQBcd-0-bdb24286d032a9b616d9bef02510b968)
实例文件while.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_02.jpg?sign=1739425386-USPlSSv3QkOfS6g3gMrb27ocnnTyy2NU-0-6506677e18ad3a5a28ffd287e9b8bdaa)
执行后输出结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_03.jpg?sign=1739425386-W2PIUoOLTRxcY5lg0tzPLCAQYNtfrFuL-0-0758b983ffb4d0fa43622fd3e8336567)
6.2.2 while…else循环语句
while…else循环语句的语法格式如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_04.jpg?sign=1739425386-HAiHsjAXwoCH0jXbXaORJlMpXsAquukv-0-9f149f1d4ea4a5a3f08c633a49a1e9fc)
在上述语法格式中,while语句只有在测试条件为假时才会停止。在while语句的循环体中一定要包含改变测试条件的语句,以保证循环能够结束,从而避免出现死循环。while语句包含与if语句相同条件的测试语句,如果条件为真就执行循环体;如果条件为假,则终止循环。while语句也有一个可选的else语句块,它的作用与for循环中的else语句块一样。当while循环不是由break语句终止时,会执行else语句块中的语句。而条件语句也可以用于while循环中,其作用是跳过条件后的语句,提前进入下一个循环。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_05.jpg?sign=1739425386-5AmbRCODNmfrMoaHuhPczQRWTFBA2h0A-0-42aa85d6f49eb2c9af77411ef3a73f1f)
实例文件else.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_06.jpg?sign=1739425386-Jy3CQ6KK0gLBEwrNFpbfS2SIv4I7Y0yL-0-310b0f17fcb3fe5535fdad0c5b7ff078)
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_01.jpg?sign=1739425386-OMSfbiiXf8eyghCQNqOynTiDtcsD5Obs-0-dd8a75c631f248575ebc48048541f481)
执行后输出的结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_02.jpg?sign=1739425386-rM7MKvJci5bvPM6HEba2CbEc31CzRasv-0-49c3a4f8ce6b2cdcc6641cf383d2c0d1)
6.2.3 解决死循环问题
死循环是指循环一直执行下去而不会停止,有时也被称为无限循环。在Python程序中,while循环语句不像for循环语句那样遍历某一个对象的集合后停止循环。在使用while语句时,最容易出现的问题就是测试条件永远为真,导致死循环发生。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_03.jpg?sign=1739425386-N6NhqjsE41tluRsUPSTdziPeyF04fDYf-0-0d607e114459a51fbe74a1ec86b62ff1)
实例文件wuxian.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_04.jpg?sign=1739425386-KU8LxAYSHAtC8QVJcrROJpHNveNimqTz-0-97f8f6ff95732fd743dcf0f36438f46d)
在上述代码中,因为循环条件变量var的值一直为1,该条件一直为true,所以循环将无限执行下去,这就形成了死循环。执行后将一直提示用户输入一个整数,在用户输入一个整数后还继续无限次数的提示用户输入一个整数,如图6-1所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_05.jpg?sign=1739425386-ID3Xmw8s4xCtwGoM9sHEZqB1VxiPgONn-0-d0dddb255d687f5c040ea777fa12dd36)
图6-1 无限次数提示用户输入一个整数
使用〈CTRL+C〉组合键可以中断上述死循环,中断后的效果如图6-2所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_06.jpg?sign=1739425386-4654Rhd45t3BFAUpO5PNGIXqp18sBNmb-0-c9a2cad33567d6248fc2c791e9852d87)
图6-2 中断死循环
注意:在使用while循环时,读者应仔细检查while语句的测试条件,避免出现死循环的问题。
6.2.4 嵌套的while循环语句
和使用for循环嵌套语句一样,在Python程序中也可以使用while循环的嵌套形式,具体语法格式如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_01.jpg?sign=1739425386-1FpyVIiiDMEr2mMXqYDih55TtGfyZ5EB-0-f1b5f83a085c5abf5db13fdce88625f6)
还可以在循环体内嵌套使用其他类型的循环,例如可以在while循环中嵌入for循环,也可以在for循环中嵌入使用while循环。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_02.jpg?sign=1739425386-TEJxfBp39cY8PQ6TosaeSPDoCdOayIkg-0-ae26249cb77ad002de6054d638fb1daf)
实例文件qiantao.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_03.jpg?sign=1739425386-OSoArWXLHPE7szYf3w27xHkrVQEe2pXW-0-3fe4257f3166ef97feedb5436c3f8a2b)
执行后输出的结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_04.jpg?sign=1739425386-x89oaUD0bogvy0gx9zlXLjEmGqfgmhOY-0-6d2acd5a6a4938f4d7af2f16622cce8f)