python3 登录验证小程序,同一用户输错三次密码,锁定账户

'''

让用户输入用户名密码

认证成功后显示欢迎信息

用户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