目标:1.设置一个密码为123456
2.输入正确密码有成功提示,输入错误有错误提示并可重新输入
3.共有3次输入错误的机会,超过之后锁定。
4.输入‘reset’可以设置新密码,原密码作废。
代码如下:
1 password_list = ['123456'] 2 def account_login(): 3 x = 1 4 while x < 4: 5 password = input('Please input password:') 6 if password == password_list[-1]: 7 print('Access permission!!!') 8 break #成功登陆之后跳出循环 9 elif password == 'reset': 10 new_password = input('New password:') 11 password_list.append(new_password) 12 print('You have changed password successfully!') 13 account_login() 14 break #这里这个break必须要加,否则执行完上一个函数后,会再次进入while循环中 15 elif x < 4: #前三次失败输出登录失败信息 16 print('Access deny') 17 if x <3 : #前两次失败输出重输信息 18 print('Please type again, you have ' + str(3 - x) + ' times left.') 19 print("You can type 'reset' to reset password.") 20 x = x + 1 21 if x == 4: #第四次失败循环结束,提示锁定 22 print('Sorry,your account is locked!') 23 account_login()
总结:
1.一开始在执行reset密码部分的时候,发现重设密码之后,输入新的密码提示登陆成功,然后又跳出一次输入密码,分析后发现是第二个elif完全执行后又再次进入while造成。
添加14行的break之后解决。
2.在重设密码的时候用到了append + list[],这里回顾下appen和extend的区别
1 >>> a=[1,2,3,4,5] 2 >>> b=['x','y','z'] 3 >>> a.append(b) 4 >>> print(a) 5 [1, 2, 3, 4, 5, ['x', 'y', 'z']] 6 7 >>> a=[1,2,3,4,5] 8 >>> b=['x','y','z'] 9 >>> a.extend(b) 10 >>> print(a) 11 [1, 2, 3, 4, 5, 'x', 'y', 'z']