![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=1738864813-yKElIhwf0cMQF3EB8LWhyurXtf42mpRz-0-898d4e64104df560e12fb4f90449d290)
↑扫码看视频
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=1738864813-7oM2jqaq4xhFxFOInw1GvLBpShxNkD9i-0-c0606f509cf9c735c64ee81a83cf0953)
在上述格式中,当condition为真时会循环执行后面的执行语句,一直到条件为假时才退出循环。如果第一次条件表达式为假,那么会忽略while循环。如果条件表达式一直为真,会一直执行while循环。也就是说,会一直循环执行while循环中的执行语句部分,直到当条件不能被满足为假的条件时才退出循环,并执行循环体后面的语句。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_01.jpg?sign=1738864813-ILjwLz6U0VqAdKeGUmZavro3JyCfa8eD-0-d14c72deb8d6cd9708fbc13dccf34fca)
实例文件while.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_02.jpg?sign=1738864813-chZW5nXMlZSMLW89nS6hxb8Ge4Zdu2SA-0-262aaa422234dbc6865a0667fcfaa5fd)
执行后输出结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_03.jpg?sign=1738864813-N564iq6riIHpo704J5u2qpqzyUqmB2IL-0-ee337537814266738f3dc254400d3970)
6.2.2 while…else循环语句
while…else循环语句的语法格式如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_04.jpg?sign=1738864813-n4ZDOvfhNa8y6ph09yBM1BwPZyTdEW1v-0-854735be6514ee403e1cf16de86a3437)
在上述语法格式中,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=1738864813-yI6imH8ni2veSIaYszeKOI2jqK6Gxm8G-0-2ef4eda4ccf24e1bb0fa8ccd5edf6e8e)
实例文件else.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/80_06.jpg?sign=1738864813-pAbrSfgaO4IuLgAVn5PRrYTIOMq4465N-0-01a7bb8ad953cfa6f77d60df436d5096)
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_01.jpg?sign=1738864813-lOYy1FYc3eAppw2eqDpwb7XITsD2lw7E-0-5292729b1db7508aa3f5385f9e08ca9e)
执行后输出的结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_02.jpg?sign=1738864813-KXfHKJ4qwXP0HJEMXxZc5ijD25N8dBsi-0-b7dbe69145a58d5b4765391af9f8a983)
6.2.3 解决死循环问题
死循环是指循环一直执行下去而不会停止,有时也被称为无限循环。在Python程序中,while循环语句不像for循环语句那样遍历某一个对象的集合后停止循环。在使用while语句时,最容易出现的问题就是测试条件永远为真,导致死循环发生。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_03.jpg?sign=1738864813-axcgZKemVDXGnohlLjnz4kjtXyvoR1yA-0-0a6a19a3fbc3a00c810f33ad1bfc0c81)
实例文件wuxian.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_04.jpg?sign=1738864813-t3KgejQkk1jnbRdD3XaG1gF17TQKlx4b-0-de8950faa7e3ca7ee0b54ef51d5c0e15)
在上述代码中,因为循环条件变量var的值一直为1,该条件一直为true,所以循环将无限执行下去,这就形成了死循环。执行后将一直提示用户输入一个整数,在用户输入一个整数后还继续无限次数的提示用户输入一个整数,如图6-1所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_05.jpg?sign=1738864813-E4fyuGuCMWUeZ94tEEw8PNNE9PhGnZ0D-0-309c49fc9af7d7f33915980ee61898d3)
图6-1 无限次数提示用户输入一个整数
使用〈CTRL+C〉组合键可以中断上述死循环,中断后的效果如图6-2所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/81_06.jpg?sign=1738864813-UqjyCfkPhSgnDOxMUROqEQUIxzE2azjI-0-f650ebe11adfea7c0618e6eab6c279b8)
图6-2 中断死循环
注意:在使用while循环时,读者应仔细检查while语句的测试条件,避免出现死循环的问题。
6.2.4 嵌套的while循环语句
和使用for循环嵌套语句一样,在Python程序中也可以使用while循环的嵌套形式,具体语法格式如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_01.jpg?sign=1738864813-QFV97tIwa1EydlAt9GB5PoIzbgyQL65B-0-91ae59787a919c455da60c6f48bc2a7e)
还可以在循环体内嵌套使用其他类型的循环,例如可以在while循环中嵌入for循环,也可以在for循环中嵌入使用while循环。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_02.jpg?sign=1738864813-5WR8jnrPbz7IGJje84NBeQ0TZwhK2Bku-0-836cd9c7dc70288967ec88a6b8e5f3cf)
实例文件qiantao.py的具体实现代码如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_03.jpg?sign=1738864813-jMgVz2S8l0hoHmQ8lEngCOd7qVicwHKC-0-93bee106fb3753aeeeccd1bcf8d92dc9)
执行后输出的结果如下所示。
![](https://epubservercos.yuewen.com/985AB7/17977545508664106/epubprivate/OEBPS/Images/82_04.jpg?sign=1738864813-pYGIvXzImvm5Ju2SyprDcXBDUGOr68Yq-0-264a20da6af87184cda452dd014a9d03)