需求:用户信息存在文档中,要求输入用户名,和密码,当输入三次错误之后,将文档中用户的账户锁定,不允许再登陆了。
1.设计文档数据结构
UserAccount.txt中数据信息
xiaoming,12345678,0
zhangsan,6545613,0
lisi,9674631,1
wangwu,56346346,1
2.思路
# 1.确认文件里的数据结构
# 2.确认内存里的数据结构
# 3.使用循环去判断即可
3.自己的想法实现思路(不完善版)
accounts = {} # 用字典结构
f = open("UserAccount", "r")
for line in f:
line = line.strip().split(',')
accounts[line[0]] = line
# print(accounts)
user = input("输入用户名:").strip()
if user in accounts.keys():
if int(accounts[user][2]) == 0:
for i in range(0, 3):
password = input("输入密码:").strip()
if password == accounts[user][1]:
exit("账号已打开!")
else:
print(f"密码错误{i+1}次,请重新输入:")
accounts[user][2] = "1"
print("账户已锁定")
else:
print("账户已锁定")
else:
print("用户未注册,请重新输入,程序结束。")
4.课程学习的实现思路
accounts = {} # 用字典结构记录,用户文件信息
f = open("UserAccount", "r")
for line in f:
line = line.strip().split(',')
accounts[line[0]] = line
# print(accounts)
while True:
user = input("输入用户名:").strip()
if user not in accounts.keys():
print("该用户未注册。。")
continue
elif accounts[user][2] == "1": # 代表账号已锁定
print("此账户以锁定。。")
continue
count = 0
while count < 3:
password = input("输入密码:").strip()
if password == accounts[user][1]:
print("-------账户已打开!------")
exit()
else:
print("密码错误请重新输入")
count += 1
if count == 3:
print(f"密码输错{count}次,账号{user}已锁定。。")
# 1.锁定的话需要把内存中字典中状态0改为1。
# 2.把字典里的数据按原UserAccount文件格式,存回原文件
accounts[user][2] = "1"
f2 = open("UserAccount", "w")
for user, val in accounts.items():
line = ",".join(val) + '\n' # 再把列表转换为字符串
f2.write(line)
f2.close()
exit()
菜鸟上路,艰难求索,加油。