#写一个自动生成密码文件的程序
# 1 输入几,文件里面就产生多少条密码 input
#2 密码必须包含 大写字母 小写字母 数字 特殊字符
#3 密码不能重复
#4 密码都是随机产生的
#5 密码长度6-11位
import string,random
pwd_len = input('请输入你要产生多少条密码:').strip()
pwds = set() #存放所有的密码
if pwd_len.isdigit():
pwd_len = int(pwd_len)
while len(pwds)!=pwd_len:
num=random.choice(string.digits) #随机取一个元素 数字 choice
letter = random.choice(string.ascii_lowercase) #随机取一个元素 小写 choice
upper = random.choice(string.ascii_uppercase)#随机取一个元素 大写 choice
pun = random.choice(string.punctuation) #随机取一个元素 特殊字符 choice
pasd_len = random.randint(6,11) #代表生成密码的长度
other_len = pasd_len - 4 #剩余的长度
all_strs = string.digits+string.ascii_letters+string.punctuation
# 数字 大小写 特殊字符
other_passwd = random.sample(all_strs,other_len)#随机取到剩下的密码
pwd_list = [num,letter,upper,pun]+other_passwd #产生密码之后的list
random.shuffle(pwd_list)#顺序打乱
pwd_str = ''.join(pwd_list) #最终的密码
pwds.add(pwd_str+'\n')
else:
open('passwds.txt','w').writelines(pwds)
else:
print('条数必须是整数!')
#2.写一个注册程序,账号和密码都存在文件里面
#users表 存了用户名,密码 # niuhanyang 123456
#choice = input('请输入你的选择:1 注册 2 删除用户 3登录')
#注册 输入账号 密码 密码确认 需要校验用户是否存在 2次输入的密码是否一致,为空。账号和密码存在文件里面
#删除 输入一个用户名就删除这个 需要校验用户是否存在
#登录 输入账号密码登录 需要校验用户是否存在
users_all = {} #存放所有的用户,用字典定义
with open('users') as f:
for line in f:
# niuhanyang,123456\n
line = line.strip()
temp = line.split(',')
username = temp[0]
pwd = temp[1]
users_all[username]=pwd
print(users_all)
for i in range(3):
choice = input('请输入你的选择:\n1.登录\n2.注册\n3.删除').strip()
if choice =='1':
uesrname = input('请输入用户名:').strip()
pwd = input('请输入密码:').strip()
if username and pwd:
if username in users_all:
if users_all.get(username)==pwd:
print('登录成功')
else:
print('账号密码错误')
else:
print('账号不存在')
else:
print('账号密码不能为空')
elif choice =='2':
username = input('请输入用户名:').strip()
pwd = input('请输入密码:').strip()
cpwd = input('请确认密码').strip()
if username and pwd and cpwd:
if username in users_all:
print('账号存在')
else:
if pwd == cpwd:
users_all[username]=pwd
print('注册成功')
else:
print('两次密码不一致')
else:
print('输入不能为空')
elif choice == '3':
username = input('请输入用户名:').strip()
if username in users_all:
users_all.pop(username)
print('删除成功')
else:
print('输入不能为空')
else:
print('输入有误,请重新输入')
else:
with open('users','w') as fw:
for uname,pwd in users_all.items():
fw.write(uname+','+pwd+'\n')