# 一、实现用户注册功能
# 思路:
# 用户输入用户名、密码
# 将用户输入的内容按照固定的格式,比如:egon:123,存入文件
# 可以往一个文件中重复注册新的用户名和密码
# 附加:
# 1、对输入的用户名进行合法性监测,不能以数字开头,且如果输入的用户名已存在于文件中则要求用户重新输入
# 2、对输入的密码进行合法性监测,密码的长度至少6位,并且不能包含特殊字符*&$
db.txt文件内容:
egon:123456
alex:alex123
with open("db.txt", 'r') as f:
data = f.read()
a = data.split('\n')
a.pop(-1)
# print(a)
name_dic = {}
for i in a:
k = i.split(':')
name_dic[k[0]] = k[1]
# print(name_dic)
while 1:
flag = 0
name = input("请输入用户名:").strip()
# 不能以数字开头,如果存在则要求重新输入
if name[0].isdigit():
print("用户名非法输入,请重试!")
continue
else:
# 验证是否存在
if name in name_dic:
print("用户已存在,请重新输入!")
else:
# 验证密码
while flag == 0:
pwd = input("请输入密码(至少6位):").strip()
for i in pwd:
for j in '*&$':
if i == j:
flag = -1
break
if flag == -1:
break
if flag == -1:
flag = 0
print("密码非法输入,请重试!")
continue
if len(pwd) < 6:
print("密码长度不能少于6位,请重试!")
continue
else:
print("OK")
flag = 1
if flag == 1:
# 验证通过,开始写信息
with open('db.txt', 'a') as f:
f.write('%s:%s\n' % (name, pwd))
print("用户注册成功!")
# 二、实现用户验证功能更:
# 思路:
# 用户输入账号密码,从文件中读出账号密码,与用户输入的进行比对
# 附加:新建黑名单文件,同一个账号名输错三次则将用户名写入黑名单文件中,如果用户输入的用户名存在于黑名单中则直接退出
db.txt内容同上一程序
BlackList.txt内容:
alex|
with open("db.txt", 'r') as f:
data = f.read()
a = data.split('\n')
a.pop(-1)
print(a)
name_dic = {}
for i in a:
k = i.split(':')
name_dic[k[0]] = k[1]
with open('BlackList.txt', 'r') as f1:
data1 = f1.read()
a1 = data1.split('|')
a1.pop(-1)
print("黑名单中的数据:", a1)
count = {}
for j in name_dic:
count[j] = 0
print(count)
while 1:
name = input("请输入账号:").strip()
if name in a1 or count[name] == 3:
print("非法用户!")
break
if name not in name_dic:
print("用户名不存在,请重试!")
else:
pwd = input("请输入密码:").strip()
if pwd == name_dic[name]:
print("登录成功!")
break
else:
# 密码输入错误
count[name] += 1
print("密码输入错误!该用户已输错%d次!" % count[name])
if count[name] == 3:
print("该用户因输入次数过多,已锁定!")
# 写入黑名单
with open('BlackList.txt', 'a') as f2:
f2.write('%s|' % name)