python的while和for循环之后,可以跟随else。如:while....else和for...else.
但是这个else中语句的执行是有条件的,如果是执行了break从循环中中断的话,else是不执行的。
循环的条件正常结束后,才会执行else中语句。
以下例子:
第一个,每次循环正常结束后都会有两个提示出现:
#!/usr/bin/python # -*-coding:utf-8 -*- import datetime for i in range(1,5): name = input("please input your name:") pwd = input("please input your password:") if len(name.strip(' ')) != 0 or len(pwd.strip(' ')) != 0: if name == 'aaa' and pwd == '123456': print( "%s,欢迎登录,今天的日期是%s" % (name, datetime.date.today()) ) break else: print( "账号或密码错误" ) else: print( "用户名或密码不允许为空" ) else: print("失败次数太多")
结束后最后的提示是两条:
please input your name:1 please input your password:2 账号或密码错误 please input your name:1 please input your password:2 账号或密码错误 please input your name:1 please input your password:2 账号或密码错误 please input your name:1 please input your password:2 账号或密码错误 失败次数太多
账号或密码错误
失败次数太多
我想只显示最后的 “失败次数太多”
没有办法,只能增加判断了,如下:
#!/usr/bin/python # -*-coding:utf-8 -*- import datetime for i in range(1,5): name = input("please input your name:") pwd = input("please input your password:") if i == 4: continue if len(name.strip(' ')) != 0 or len(pwd.strip(' ')) != 0: if name == 'aaa' and pwd == '123456': print( "%s,欢迎登录,今天的日期是%s" % (name, datetime.date.today()) ) break else: print( "账号或密码错误" ) else: print( "用户名或密码不允许为空" ) else: print("失败次数太多")
运行结果:
please input your name:1 please input your password:2 账号或密码错误 please input your name: please input your password: 用户名或密码不允许为空 please input your name: please input your password: 用户名或密码不允许为空 please input your name: please input your password: 失败次数太多