![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=1739285346-zXSA3nEjEUcwLDlMaLlSCD3BY8ilghnH-0-13e0278eaef6c7f186f73c98d3c8b3a5)
↑扫码看视频
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=1739285346-uwMeXpcOgyF2McT3JqCBvVv8TcgLCeaZ-0-3d9479a780eb8a3d09b0c2f077eedff5)
在上述格式中,当condition为真时会循环执行后面的执行语句,一直到条件为假时才退出循环。如果第一次条件表达式为假,那么会忽略while循环。如果条件表达式一直为真,会一直执行while循环。也就是说,会一直循环执行while循环中的执行语句部分,直到当条件不能被满足为假的条件时才退出循环,并执行循环体后面的语句。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_01.jpg?sign=1739285346-rjNyfQSGoVWkmIBhMLQc0vYlcJT4dcGR-0-dcaa69e5c2150080b8d5bef0579c769d)
实例文件while.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_02.jpg?sign=1739285346-4n3gS8ONobM8XGxe18i8fxaZj9v2nML1-0-f843481fc1416669f38dcceecda2e246)
执行后输出结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_03.jpg?sign=1739285346-hzs2OvkYtIUIqKPE6brkD8bFhHyp56rk-0-081069625f0c00aa412f185caa385a87)
6.2.2 while…else循环语句
while…else循环语句的语法格式如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_04.jpg?sign=1739285346-gR9GBRy5uj8lHygNdLearVE6E0DsZowo-0-e5f67305f0258480180312cb9dfbbb32)
在上述语法格式中,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=1739285346-NjHZxYq46njyXvFPYtPDJuis6zOQdlgO-0-e7d88f4c8b82326b2d5282d9ffaac532)
实例文件else.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_06.jpg?sign=1739285346-ZWu0sp0S5bUwGNVVgDuGWuy9cJyz3UrC-0-ecb426cd096a195e4582b0ee2c3cc926)
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_01.jpg?sign=1739285346-gpZhvaVxHdnjauPbegvVZ3KHhSfxlogq-0-54599a632c4ce77f0479f3733cf59100)
执行后输出的结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_02.jpg?sign=1739285346-TrXOdC4bQRpznuBck2mOQHXjYRBseMXk-0-c63247fda935d312eb78a094ac594c13)
6.2.3 解决死循环问题
死循环是指循环一直执行下去而不会停止,有时也被称为无限循环。在Python程序中,while循环语句不像for循环语句那样遍历某一个对象的集合后停止循环。在使用while语句时,最容易出现的问题就是测试条件永远为真,导致死循环发生。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_03.jpg?sign=1739285346-XKB5JF8k09MQEZLfz5kfOMU8uQzJF62E-0-283b040b73945aabfc92d82ef520e4e1)
实例文件wuxian.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_04.jpg?sign=1739285346-yxh7JZRjPmybcF1qXuolmhNQxx2AUacj-0-3c0da3f7ea0a8ecd9796cec771815112)
在上述代码中,因为循环条件变量var的值一直为1,该条件一直为true,所以循环将无限执行下去,这就形成了死循环。执行后将一直提示用户输入一个整数,在用户输入一个整数后还继续无限次数的提示用户输入一个整数,如图6-1所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_05.jpg?sign=1739285346-imsR63KjXywG0C8QVyzeVMlA8xJsxevo-0-7aeb298d75ddb737c3351048e9b86726)
图6-1 无限次数提示用户输入一个整数
使用〈CTRL+C〉组合键可以中断上述死循环,中断后的效果如图6-2所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_06.jpg?sign=1739285346-VGSoMKqNtrGJtDU3OAQlHFpqGXoU4UWr-0-72f736c3c1873fa3572743981c9c0608)
图6-2 中断死循环
注意:在使用while循环时,读者应仔细检查while语句的测试条件,避免出现死循环的问题。
6.2.4 嵌套的while循环语句
和使用for循环嵌套语句一样,在Python程序中也可以使用while循环的嵌套形式,具体语法格式如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_01.jpg?sign=1739285346-HTuwjM8W6PEmpVfAVJ7JwDFts59kA8rl-0-e50a9784a448477d30b124540d793ae9)
还可以在循环体内嵌套使用其他类型的循环,例如可以在while循环中嵌入for循环,也可以在for循环中嵌入使用while循环。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_02.jpg?sign=1739285346-QhA1qHCYLW12ZjH7FCfVzg6YiPeTRI4i-0-0f0619e235a94ae728ea30bdee634131)
实例文件qiantao.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_03.jpg?sign=1739285346-NHHsr7adbkWMlLGt7Jlq6vo5KW29NzEu-0-a2c4b5f3e933cbc254ee64279839c527)
执行后输出的结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_04.jpg?sign=1739285346-B58CyPXZxMWKq4NO3nVdvX1DKgjo4eje-0-6d1bd9ed4292b17e847f35f0628d4a34)