1.先做一个基础版:用字符串存储一个密码,与用户输入的字符进行匹配,用for循环限制输入次数为3次,完成后打印验证结果。
mima='123456'
for i in range(3):
password=input('请输入六位数字密码:')
if password==mima:
print('密码正确。')
break
else:
print('密码错误,请重新输入。')
else:
print('3次机会已用完。')
2.改为用字典存储多组用户名和密码,用户输入的用户名和密码与字典进行比对验证,只有用户名和密码都匹配时才能验证通过,并且改为用while循环来限次数。
mimaben={'张三':'123456','李四':'112233','王五':'666666'}
time1=0
while time1<3:
xingming=input('请输入用户名:')
mima1=input('请输入6位数字密码:')
if xingming not in mimaben.keys():
print('用户名不存在,请重新输入。')
elif mima1==mimaben[xingming]:
print('密码正确。')
break
else:
print('密码错误,请重新输入。')
time1=time1+1
else:
print('3次机会已用完。')
3.加入一个小功能:提示用户密码错在哪里,是长度不对还是格式不对,并且提示已经用了几次机会。
格式不对的意思是用户输入的是非数字密码,长度不对的意思是密码长度不是6位,这两个条件限制了用户必须输入6位数字密码才行。
mimaben={'张三':'123456','李四':'112233','王五':'666666'}
time1=0
while time1<3:
xingming=input('请输入用户名:')
mima1=input('请输入6位数字密码:')
if xingming not in mimaben.keys():
print('用户名不存在,请重新输入。')
elif mima1==mimaben[xingming]:
print('密码正确。')
break
else:
if len(mima1)!=6:
print(f'密码长度错误,已使用{time1+1}次机会,共3次,请重新输入。')
elif mima1.isdecimal()==False:
print(f'密码格式错误,已使用{time1+1}次机会,共3次,请重新输入。')
else:
print((f'密码不对哦,已使用{time1+1}次机会,共3次,请重新输入。'))
time1=time1+1
else:
print('3次机会已用完。')
4.继续完善,在以上的基础上,加入一个tongguo变量并初始化为false,把以上的所有while循环内容嵌套在一个新的while循环内,在验证通过时把tongguo重新赋值为true,结束所有循环。通过这个方法把用户名和密码的验证分开,先验证用户名,用户名正确后再输入和验证密码,过程同上。
mimaben={'张三':'123456','李四':'112233','王五':'666666'}
time1=0
tongguo=False
while tongguo==False:
name1=input('请输入用户名:')
if name1 not in mimaben.keys():
print('用户名不存在,请重新输入:')
else:
while time1<3:
mima1=input('请输入6位数字密码:')
if mima1==mimaben[name1]:
print(f'恭喜,验证通过,共用{time1+1}次机会。')
tongguo=True
break
else:
if len(mima1)!=6:
print(f'密码长度错误,已使用{time1+1}次机会,共3次,请重新输入。')
elif mima1.isdecimal()==False:
print(f'密码格式错误,已使用{time1+1}次机会,共3次,请重新输入。')
else:
print((f'密码不对哦,已使用{time1+1}次机会,共3次,请重新输入。'))
time1=time1+1
else:
print('验证失败,3次机会已用完。')
break



