1. 作业要求
基础需求:
让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序
升级需求:
可以支持多个用户登录 (提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
2. 流程图
3. Readme
功能
基础的用户认证登录功能
1. 用户输入用户名和密码,开始用户认证
2. 用户认证不通过的 情况
- 用户名不存在,提示后退出登录
- 用户名输入错误,提示错误,可以输入三次,三次后用户被锁定
- 用户已经被锁定了,这样不管密码是否正确都会提示锁定
代码语言
python3.6
版本
version 0.0.1
4. 代码
#!/usr/bin/env python3
# _*_coding:utf-8 _*_
# @author : zpfly
# version 0.0.1
# 用户登录认证程序
user_file = 'user.txt'
# user_file格式如下
# 用户名1:密码
# 用户名2:密码
lock_file = 'locks.txt'
# locks格式如下
# 用户名1
# 用户名2
# 先读入用户名密码文件与用户锁定文件
with open(user_file, 'r') as fr:
user = fr.read().split('\n')
user_list = {}
for record in user:
name, password = record.split(':')
user_list[name] = str(password)
# users = {'abc': '123', 'test': '1234', 'Lily': '56789'}
with open(lock_file, 'r') as fr:
locks = fr.read().split('\n')[:-1]
# locks = ['abc', 'test']
# 定义用户认证程序
def login_auth(username, password):
if username in user_list:
if username in locks:
print("\033[1;31;m你的账号已经被锁定,请联系管理员解锁!\033[0m")
return 0
else:
if password == user_list[username]:
print("登陆成功!")
return 0
else:
print("\033[1;31;m密码输入错误!\033[0m")
return 2
else:
print("\033[1;31;m输入的用户不存在,请联系管理员录入用户信息!\033[0m")
return 3
# 开始用户登录
n = 0
while n < 3:
print("欢迎登陆用户认证系统,请输入你的用户信息")
username = input("1. 请输入用户名:")
password = input("2. 请输入用户密码:")
# 对用户的输入进行判断
result = login_auth(username, password)
if result == 0: # 认证通过就退出认证
break
elif result == 3:
break
n += 1
if n == 3:
with open(lock_file, 'a') as fw:
fw.write(username + '\n')
print("\033[1;31;m连续三次输入错误,你的账户已被锁定!\033[0m")
5. 测试
测试1:用户登录
欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:12345
密码输入错误!
欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:123
登陆成功!
测试2:输错密码锁定
欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:test1234
密码输入错误!
欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:11111
密码输入错误!
欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:2345
密码输入错误!
连续三次输入错误,你的账户已被锁定!
再次登录
欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:123
你的账号已经被锁定,请联系管理员解锁! # 用户已经被锁定了,账号密码正确也不行
测试3:没有这个用户
欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:Lily
2. 请输入用户密码:12345
输入的用户不存在,请联系管理员录入用户信息!
不足与思考:
1. 只是一个测试程序,没有新用户注册功能