1、写一个生产密码的程序,输入几,就产生几条密码,密码产生的不重复。
要求密码:长度6 - 12,密码必须包含
大写字母、小写字母、数字
产生完密码后存到一个文件里面
1.首先输入生成密码的条数 需要校验输入的要是数字
2.根据输入,生成几条密码
3.生成的密码长度要是随机的,且再6-12之间
4.内容要包含大写字母、小写字母、数字
5.生产后的密码,写在文件中,每次生成密码要不重复
string中的常用的方法:
Some strings for ctype-style character classification
whitespace = ' \t\n\r\v\f'
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ascii_letters = ascii_lowercase + ascii_uppercase
digits = '0123456789'
hexdigits = digits + 'abcdef' + 'ABCDEF'
octdigits = '01234567'
punctuation = """!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"""
printable = digits + ascii_letters + punctuation + whitespace
方法一
import string
import random
def create_pa():
start=random.choice(string.digits)+random.choice(string.ascii_lowercase)+random.choice(string.ascii_uppercase)
end=random.sample(string.digits+string.ascii_letters,random.randint(6,12)-3)
end.append(start)
random.shuffle(end) #洗牌
passwerd=''.join(end)
print(passwerd)
return passwerd
create_pa()
def run():
number=input('输入条数:').strip()
password_set=set()
if number.isdigit():
while len(password_set) != int(number):
result=create_pa()
password_set.add(result+'\n')
with open('pasw.txt','w',encoding='utf-8') as Wfile:
Wfile.writelines(password_set)
def create_password():
start = random.choice(string.digits) + random.choice(string.ascii_lowercase) \
+random.choice(string.ascii_uppercase)
end = random.sample(string.digits+string.ascii_letters,random.randint(6,12)-3)
end.append(start)
random.shuffle(end)
password = ''.join(end)
return password
# 方法二
import string
import random
def create_password2():
number_set = set(string.digits)
upper_set = set(string.ascii_uppercase)
lower_set = set(string.ascii_lowercase)
while True:
before_password = random.sample(string.digits+string.ascii_uppercase+string.ascii_lowercase,random.randint(6,12)) #生成一个6-12位的字符,再大写、小写、数字的组合之间
p = set(before_password) #存在几何种去重
if number_set & p and upper_set & p and lower_set & p: #如果生成的字符和大写、小写、数字都有交集,则返回
return ''.join(p)
def run():
number = input("请输入产生的条数").strip() #1000
password_set = set()
if number.isdigit():
while len(password_set)!=int(number):#0,1000
# result = create_password()
result = create_password2()
password_set.add(result+'\n')
with open('passwords.txt','w') as fw:
fw.writelines(password_set)
run()