一个自动生成密码文件的小程序

1、写一个自动生成密码文件的程序
1、你输入几,文件里面就给你产生多少条密码
2、密码必须包括,大写字母、小写字母、数字、特殊字符
3、密码不能重复
4、密码都是随机产生的
5、密码长度6-11

方法一(自己写的)
import  random,string
f=open('pwd.txt','w') #w覆盖原来产生的文件
num=input('请输入你要产生的密码个数:')
s = set()

while True:
random_num=str(random.randint(1,999999))
lower=random.sample(string.ascii_lowercase,2)#从小写字母序列中随机取2个元素
upper=random.sample(string.ascii_uppercase,2)#从大写字母序列中随机取2个元素
pun=random.choice(string.punctuation) #随机取一位特殊字符
#''.join() # 1它把一个list变成了字符串 # 2通过某字字符串把list里面的每个元素连接起来
pwd_list = [random_num,pun] +lower+upper# 产生密码之后的list
random.shuffle(pwd_list) # 顺序打乱
print(pwd_list)
pwd_str = ''.join(pwd_list) # 最终的密码
s.add(pwd_str)

if len(s)==int(num):
break

for n in s:
f.write(str(n)+'\n')
f.close()

 
方法二(答案)
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)#random.choice随机取一个元素
letter = random.choice(string.ascii_lowercase)#随机取一个小写字母
upper = random.choice(string.ascii_uppercase)#随机取一个大写字母
pun = random.choice(string.punctuation)#随机取一个特殊字符
pasd_len = random.randint(6,11) #代表生成密码的长度
other_len = pasd_len - 4 #剩余的长度
all_strs = string.digits+string.ascii_letters+string.punctuation
# random.sample随机取N个元素,返回的是一个list
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('条数必须是整数!')
 



猜你喜欢

转载自www.cnblogs.com/jiadan/p/8909146.html