【Python】while...else详细讲解

356 阅读2分钟

Python中的循环可以和else配合使用,else下方缩进的代码指的是当循环正常结束之后要执行的代码

 

一、场景****

需求: 假如你的女朋友生气了,要惩罚:让你连内需说5遍“媳妇,我错了”,如果道歉正常完毕女朋友就原谅你了,这个程序怎么写?


i = 1
while i <= 5:
    print('媳妇,我错了')
    i += 1
print('媳妇原谅我了')

 

思考:以上最后的print是不是即使没有循环也能执行,所以以上循环如果没完成,最后的print照样会执行,那么以上代码是不符合的。正确的是以上循环和下面的print会有依赖关系的,只有以上的5遍循环结束了才可以打印媳妇原谅我了。

执行结果:

图片1.png

二、while...else语法:****

while 条件:
    条件成立重复执行的代码
else:
循环正常结束之后要执行的代码

以上场景正确的代码:****


"""
1. 书写道歉的循环
2. 循环正常结束要执行的代码---else
"""
i = 1
while i <= 5:
    print('媳妇,我错了')
    i += 1
else:
    print('媳妇原谅我了,哈哈哈')
 ```

执行结果:

![图片2.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/77a675ce878f4a0297897e75bc433439~tplv-k3u1fbpfcp-watermark.image?)
 



虽然正确的代码和之前没有利用whileelse的代码执行结果相同,但是代码的严谨度是不一样的。

## **三、while...else退出循环的方式******

需求: 女朋友生气,要求道歉5遍:媳妇,我错了。道歉到第三遍的时候,女朋友埋怨这一遍说的不真诚,那么是不是就要退出循环了?这个退出有两种可能性:

 

> 1.  更生气,不打算原谅,也不需要道歉了,程序如何书写?
 
> 2. 只一遍道歉不真诚,可以忍受,继续下一遍道歉,程序如何书写?

 

#### **3.1 退出循环的方式 ----- break******

代码如下:

 
```Python
i = 1
while i <= 5:
    if i == 3:
        print('这遍道歉说的不真诚')
        break
    print('媳妇,我错了')
    i += 1
else:
    print('媳妇原谅我了,哈哈哈')

 

执行结果:

图片3.png

 

总结: 所谓else指的是循环正常结束之后要执行的代码,即如果是break终止循环的情况,else下方缩进的代码将不执行。****


3.2 退出循环的方式 ----- continue****

代码如下:

 

i = 1
while i <= 5:
    if i == 3:
        i += 1  # 当用到continue时,计数器一定要加上,不然会出现死循环
        continue
    print('媳妇,我错了')
    i += 1
else:
    print('媳妇原谅我了,哈哈哈')

 

执行结果:

图片4.png

循环只跳过第三次道歉,第四次和第五次照样正常执行下去,那么整个循环正常结束了,所以后面else缩进的代码会被执行到。

  总结:因为continue是退出当前你一次循环,继续下一次循环,所以该循环在continue控制下是可以正常结束的,当循环结束后,则执行了else缩进的代码。

这篇文章讲解了python教程之while循环和else配合使用,以上涉及到语法和退出循环的2种方式、案例代码。下一篇讲解for循环和else配合使用,也是通过以上三个方面来讲述。