'''
让用户输入用户名密码
认证成功后显示欢迎信息
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态
'''
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Hiuhung Wan
'''
让用户输入用户名密码
认证成功后显示欢迎信息
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态
'''
dic_user_info = {
"usera": {"pw": "123", "err_count": 0},
"userb": {"pw": "123", "err_count": 0},
"userc": {"pw": "123", "err_count": 0},
"userd": {"pw": "123", "err_count": 0},
"usere": {"pw": "123", "err_count": 0},
}
# 创建一个黑名单文件,这里把usera列入黑名单
try:
with open('blacklist.txt', 'r') as f:
if not f.read(): # 没有内容,就写入
with open('blacklist.txt', 'a') as f:
f.write("usera,")
except FileNotFoundError as e: # 没有这个文件,就创建并写入内容
with open('blacklist.txt', 'a') as f:
f.write("usera,")
finally:
f.close() # 关闭文件。
for i in range(100):
username = input("请输入用户名(按q退出程序):")
# 按q退出程序
if username == 'q':
exit()
# 用户名不在字典中
elif username not in dic_user_info:
print("无此账户,请检查您的输入")
continue
# 用户在字典中,但被锁定
with open('blacklist.txt', 'r') as f:
user_locked_list = f.read().split(",")
if username in user_locked_list:
print("账户%s已被锁定。。。请更换另一个账户" % username)
f.close()
continue
f.close()
# 用户在字典中,也未被锁定,则提示输入密码
password = input("请输入密码:")
if password == dic_user_info[username]["pw"]: # 密码正确
print("欢迎【%s】登录系统。。。" % username)
break
else: # 密码错
dic_user_info[username]["err_count"] += 1 # 记录错误次数
if dic_user_info[username]["err_count"] < 3:
print("密码不对,您已经输错%d次密码了,输错3次账户将被锁定" % dic_user_info[username]["err_count"])
else: # dic_user_info[username]["err_count"] >= 3: # 输错3次,录入黑名单数据库
with open('blacklist.txt', 'a') as f:
f.write("%s," % username)
f.close()
print("输错3次密码,此账户已加入黑名单")
break