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