看如下代码,想一想:怎样实现 "密码不正确的相应提示"
i = 3while i > 0: password = input("请输入密码:(还剩%d次机会)" % i) if password == "123456": print("密码输入正确") break i -= 1想要实现在 "密码不正确" 时提示相应的信息,普通的做法是:
login_flag = False # 定义一个变量,用来存储是否登录成功,True表示成功 False表示不成功i = 3while 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... 的使用方式格式:
while 条件: # 条件满足时执行的代码...else: # 如果上述的while循环没有调用break,就执行的代码...说明:
只要while循环体中没有执行break,那么当while循环体中所有的代码执行完后,else中的代码也会执行如果while循环中有break那么表示整个while结束,else中的代码也不会被执行示例:
有 break 时:i = 1while i <= 3: print("这是一段测试信息...") if i == 1: print("调用了break") break i += 1else: print("我是else中的代码")运行结果:这是一段测试信息...调用了break没有 break 时i = 1while i <= 3: print("这是一段测试信息...") i += 1else: print("我是else中的代码")运行结果:这是一段测试信息...这是一段测试信息...这是一段测试信息...我是else中的代码代码案例i = 3while i > 0: password = input("请输入密码:(还剩%d次机会)" % i) if password == "123456": print("密码输入正确") break i -= 1else: print("密码输入3次全部错误,请明日再试")for...else... 的使用方式格式:
for 变量 in 可迭代对对象: # 正常执行的代码else: # for未使用break时执行的代码示例:
未使用 breakfor i in range(5): print("i=%d" % i)else: print("我是else中的代码...")运行结果:i=0i=1i=2i=3i=4我是else中的代码....使用 breakfor i in range(5): print("i=%d" % i) if i == 1: print("我是break哦...") breakelse: print("我是else中的代码...")运行结果:i=0i=1我是break哦...代码案例for i in range(3, 0, -1): password = input("请输入密码:(还剩%d次机会)" % i) if password == "123456": print("密码输入正确") breakelse: print("密码输入3次全部错误,请明日再试")验证 continue我们知道continue的作用是结束本次循环,那么既然break在for...else...和while...else...中都起作用,那么continue呢?
接下来我们就验证一下。
验证一:
ue print("一起学Python啊,别忘了来 www.tulingxueyuan.com 网站哈")else: print("我是else中的代码...")运行结果:
来了老弟...来了老弟...来了老弟...我是else中的代码...验证二:
for i in range(3): print("来了老弟...") continue print("一起学Python啊,别忘了来 www.tulingxueyuan.com 网站哈")else: print("我是else中的代码...")运行结果:
来了老弟...来了老弟...来了老弟...我是else中的代码...结论:
在while...else...与for...else...中,break会让else中的代码不执行,而continue没有这个功能