
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Max
'''
编写登录接口:
1.输入用户名密码
2.认证成功后显示欢迎信息
3.输错3次后锁定
升级需求:
1.可以支持多个用户登录(提示,通过列表存多个账户信息)
2.用户3次认证失败之后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定
的状态存到文件中)
'''
import os
# 创建文件存储用户名和密码,并放入两对用户名和密码
# 如果用户文件不存在
if not os.path.exists('user.txt'):
# 新建一个用户文件用于读写
with open('user.txt','a+') as fx:
# 字典形式写入用户名和密码
fx.write(str({'Max':'Max666','Amy':'Amy888'}))
# 创建文件存储用户名和密码输入的次数,初始为空
# 如果锁定用户文件不存在
if not os.path.exists('lock.txt'):
# 新建一个锁定用户文件用于读写
with open('lock.txt','a+'):
pass
# 以只读文件形式打开用户文件
with open('user.txt','r') as f:
user = f.read() # 每次读取文件,将文件内容存到一个字符串变量中
user = eval(user) # 把文件中的字典格式内容读出来,并且转化为字典(默认读出来是字符串)
# 以只读文件形式打开输错密码次数的文件,大于3次被锁定,文件就是3次
with open('lock.txt','r') as f2:
dic_lock = f2.read() # 读输错密码次数的字典
if len(dic_lock) > 0: # 初始为空,所以读出来的有值的时候才能转化为字典
dic_lock = eval(dic_lock)
else:
dic_lock = {} # 无值的时候初始化字典
ifcontinue = True
while ifcontinue:
name = input("请输入用户名:")
name_exist = user.get(name) # 根据输入的用户名找对应的密码
if name_exist:
error_num = dic_lock.get(name) # 找到之后读取密码输错次数
if error_num == 3:
print('账户已被锁定!')
exit()
if error_num == None:
error_num = 0
while error_num < 3: # 未锁定时再次输入密码
passwd = input('请输入密码:')
if passwd == user.get(name):
dic_lock[name] = error_num
print("Welcome %s login..."%name)
ifcontinue = False
break
else:
error_num += 1
print("密码输入错误第%s次,输入错误超过三次将被锁定!"%error_num)
if error_num == 3:
dic_lock[name] = 3
else:
print('未找到此用户名!')
with open('lock.txt','w+') as f_lock:
f_lock.write(str(dic_lock))
OS库

文件


其它
