判断语句和循环语句-2.14循环中使用else
循环中的else
一、引入
看如下代码,想一想:怎样实现“密码不正的相应提示”
i = 3
while i > 0:
password = input("请输入密码:(还剩%d次机会)" % i)
if password == "123456":
print("密码输入正确")
break
i -= 1
想要实现在“密码不正确”时提示相应的信息,普通的做法是
login_flag = False # 定义一个变量,用来存储是否登录成功,True表示成功 False表示不成功
i = 3
while i > 0:
password = input("请输入密码:(还剩%d次机会)" % i)
if password == "123456":
login_flag = True # 如果登录成功,那么这里就改为True
break
i -= 1
# 当上述的while循环结束后,判断login_flag的值,来输出对应的信息
if login_flag == True: # 简单的写法是if login_flag:
print("密码输入正确")
else:
print("密码输入不正确,今日3次机会已用完,请明天再试...")
上述的代码整体逻辑是:
- 循环中获取密码判断是否正确,通过一个变量来标记正确与否
- 当循环结束后,在单独判断标记,然后输出对应的信息
问题:有么有简单的方式呢?
答:else
二、while...else...
1. 格式
while 条件:
# 条件满足时执行的代码...
else:
# 如果上述的while循环没有调用break,就执行的代码...
说明:
- 只要while循环体中没有执行break,那么当while循环体中所有的代码执行完后,else中的代码也会执行
- 如果while循环中有break那么表示整个while介绍,else中的代码也不会被执行
2. 示例
有break时
i = 1
while i <= 3:
print("哈哈,我是超神,double kill......")
if i == 1:
print("调用了break")
break
i += 1
else:
print("我是else中的代码")
运行结果
哈哈,我是超神,double kill...... 调用了break
没有break时
i = 1
while i <= 3:
print("哈哈,我是超神,double kill......")
i += 1
else:
print("我是else中的代码")
运行结果
哈哈,我是超神,double kill...... 哈哈,我是超神,double kill...... 哈哈,我是超神,double kill...... 我是else中的代码
3. 案例
i = 3
while i > 0:
password = input("请输入密码:(还剩%d次机会)" % i)
if password == "123456":
print("密码输入正确")
break
i -= 1
else:
print("密码输入3次全部错误,请明日再试")
三、for...else...
1. 格式
for 变量 in 可迭代对对象:
# 正常执行的代码
else:
# for未使用break时执行的代码
2. 示例
未使用break
for i in range(5):
print("i=%d" % i)
else:
print("我是else中的代码...")
运行结果:
i=0 i=1 i=2 i=3 i=4 我是else中的代码....
使用break
for i in range(5):
print("i=%d" % i)
if i == 1:
print("我是break哦...")
break
else:
print("我是else中的代码...")
运行结果:
i=0 i=1 我是break哦..
.
3. 案例
for i in range(3, 0, -1):
password = input("请输入密码:(还剩%d次机会)" % i)
if password == "123456":
print("密码输入正确")
break
else:
print("密码输入3次全部错误,请明日再试")
四、验证continue
我们知道continue的作用是结束本次循环,那么既然break在for...else...和while...else...中都起作用,那么continue呢?
接下来我们就验证一下
验证1
i = 0
while i < 3:
i += 1
print("来了老弟...")
continue
print("一起学Python啊,别忘了来 codetutor.top网站哈")
else:
print("我是else中的代码...")
运行结果
来了老弟... 来了老弟... 来了老弟... 我是else中的代码...
验证2
for i in range(3):
print("来了老弟...")
continue
print("一起学Python啊,别忘了来 codetutor.top网站哈")
else:
print("我是else中的代码...")
运行结果
来了老弟... 来了老弟... 来了老弟... 我是else中的代码...
结论:
- 在
while...else...与for...else...中,break会让else中的代码不执行,而continue没有这个功能

浙公网安备 33010602011771号