现在有一用户密码文件,需要根据此对用户的登录行为进行判断,密码错误三次即锁定用户。 文件如下:
可以先根据文件生成用户名和密码以及密码错误次数对应的字典,每次获得用户输入后,先验证其密码错误次数,超过三次则直接锁定用户并退出,如未超过三次,则验证密码准确性,密码正确,登录成功,密码错误则提示用户重新输入密码,直到登录成功或密码错误三次用户锁定为止,并在程序退出前将密码错误次数写回原文件。
代码如下:
#!/usr/bin/env python3
dict = {}
userlist = []
file = open('user.list','r')
for line in file:
name = line.strip('\n').split(':')[0]
userlist.append(name) #生成用户名列表
user,pwd,cnt = line.strip('\n').split(':')
dict[user] = [pwd,cnt] #读取文件,生成字典
file.close()
usr = input("请输入用户名:")
flag = True
while flag:
pwd = input("请输入密码:")
if usr not in userlist:
usr = input("用户名不存在,请重新输入用户名:")
continue
else:
cnt = int(dict[usr][1])
passwd = dict[usr][0]
if cnt > 2:
print("用户被锁定,请联系管理员解锁!")
break
while True:
if pwd == passwd:
print("登录成功!")
flag = False
break
else:
cnt += 1
dict[usr][1] = cnt
file = open('user.list', 'w')
for i in userlist:
info = i + ':' + dict[i][0] + ':' + str(dict[i][1])
file.write(info)
file.write('\n')
file.close() #将字典写回文件
if cnt > 2:
print("密码错误三次,用户已锁定!")
flag = False
break
else:
pwd = input("密码错误,请重新输入密码:")