1、输入几,文件里就给你产生多少条密码 (random、文件)
2、密码必须包括大写字母、小写字母、数字和特殊字符
3、密码不能重复(集合)
4、密码都是随机产生的
5、密码长度6-11位

import string,random
num = string.digits #定义数字集,string
upper = string.ascii_uppercase #定义大写字母集,string
lower = string.ascii_lowercase #定义小写字母集,string
punc = string.punctuation #定义特殊字符集,string
number = int(input('请输入需要生成的密码数'))
with open('密码','w+',encoding='utf-8') as f: #以写读模式写入
    passwd_set = set()
    for i in range(number):
        number = random.choice(num) #随机取一个数字,string
        u_case = random.choice(upper) #随机取一个大写字母,string
        l_case = random.choice(lower) #随机取一个小写字母,string
        punct = random.choice(punc) #随机取一个特殊符号,string
        rand_num = random.randint(2,7) #密码长度6-11位,减去4位必须的,剩下2-7随机位,随机整数,string
        passwd_rand = random.sample(num + upper + lower + punc,rand_num)#从密码串中随机取2-7个元素,list
        passwd = number + u_case + l_case + punct + ''.join(passwd_rand)#密码由大小写字母、数字和特殊字符固定位+随机位组成
        passwd_set.add(passwd) #集合去重
        if len(passwd_set)<i: #当重复时,集合个数小于已循环数
            i -= 1 #循环增加一次
    for j in passwd_set:
        f.write(j+'\n')
    f.seek(0) #追加写模式的文件指针在末尾,需要移到开始再读取
    print('生成的密码是\n',f.read())

输入10后产生的密码文件如下

8Eh&_2^zL%+
1Ge_2!]|u
2Ww}DZPjQU
8Yf#uOc$;wK
6Ch+LTH
7Ot=B>rj}X
0Vn_E@3
8Iw-$Nuj
8Iw,*ZG2d
1Ak$jI9F{M

 

posted on 2018-04-13 17:25  忻冉然  阅读(353)  评论(0编辑  收藏  举报