码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-04-22 21:39:49      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:random   ase   自动生成   line   txt   asc   family   原来   不能   

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(条数必须是整数!‘)
 



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

标签:random   ase   自动生成   line   txt   asc   family   原来   不能   

原文地址:https://www.cnblogs.com/jiadan/p/8909146.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!