用Python写一个简单的用户登陆程序,附件:登陆用户配置文件

314 阅读2分钟
#用户登陆程序需求:
# ●要求用户输入帐号密码进行登陆
# ●用户账号信息保存在文件内
# ●用户密码输入错误三次后锁定用户,下次再登录检测到是这个被锁定的用户,则依然不允许其登录,提示已被锁

![WX20210913-202235@2x.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2a0e3c300b634e00af378a18c72a7bb6~tplv-k3u1fbpfcp-watermark.image?)
f = open('login_account.txt','r')   #加载所有登陆账户的信息到本地
login = dict({              #设置一个本地存放登陆信息的空字典

})
# 把所有用户的登陆信息读取出来存到字典里
for i in f:
    str_line = i.strip().rsplit(',')        #去掉头部尾部的空格和换行,用','改号隔开
    login[str_line[0]] = str_line   #把信息遍历出来,用用户名作为字典的KEY
print(login)    #把本地的字典打出来查看一下
while True:
    username = input('请输入用户名:').strip()
    if username not in login:   #拿到用户输入的信息去字典里匹配,如果不存在就报不存在,要用户重新输入
        print('用户不存在')
        continue
    if int(login[username][2]) == 1:        #如果拿到的用户名状态是1的,直接告诉他账号被锁定
        print('此账号已锁定,请联系管理员解锁')
        continue
    a = 0
    while a < 3:        #设置一个循环3次的控制
        if a == 2:      #当执行到第3次的时候提示他最后一次错误将锁定
            print('最后一次输错密码将会锁定账号登录')
            psd = input('请输入密码:').strip()
            if psd != login[username][1]:
                print(f'"{username}"该账号已被锁定')
                a += 1
                continue
        psd = input('请输入密码:').strip()
        if psd != login[username][1]:
            print('密码错误,请重新输入')
            a += 1
        else:
            print('登陆成功')
            exit()
    if a == 3:      #当a=3的时候执行锁定程序
        login[username][2] = '1'        #把该账户的状态更变为1,表示锁定
        print(login)    #查看是否已经修改
        f2 = open('login_account.txt', 'w')     #再次加载登陆文件,模式设置为写
        for k, v in login.items():
            valu = ','.join(v) + '\n'   #把列表的value遍历出来,转回用','拼接,并在尾部加上换行
            f2.write(valu)      #开始写入
        f2.close()      #写入完毕,关闭文件
    exit()      #退出永循环