from random import *
def makepasswd(a,b): #定义一个生成密码的函数,可先先看main()函数
frequency = 0 #用于计算生成密码的个数
Allpasswd = [] #用于存放生成的密码
while frequency < b: #用一个while循环控制生成的密码个数,b是参数,由用户输入
passwd = [] #创建一个空的列表,每次循环时清空
for i in range(a):
num = randint(1,9) #随机生成1-9之间的数字
if num <= 3: #这一整个if语句主要是保证生成三种字符:数字、大写字母、小写字母的位置是随机的。小于三的时候下个位置生成数字
passwd.append(chr(randint(48,57)))
'''
#随机生成48 - 57之间的数字
1-9的ASCII码是48-57
chr(48)的意思是利用ASCII码生成Ascii码对应的数字
并且把这个数添加到passwd这个列表中
'''
elif num <= 6: #当随机生成数字大于三小于等于六的时候下个位置生成小写字母
passwd.append(chr(randint(97,122)))
'''
a-z的ASCII码是97-122
并且把这个小写字母添加到passwd这个列表中
下同
'''
elif num <= 9: #当随机数大于六小于等于九的时候下个位置生成大写字母
passwd.append(chr(randint(65,90)))
'''
A-Z之间的ASCII码是65-90
'''
passwd = ''.join(passwd)
'''
上面把每个生成的数字和字母依次添加到passwd这个列表中,他们之间是用都好隔开的:[1,w,R,5]。类似这样
这句话的意思是将逗号分隔符删掉,改用两个单引号之间的符号作为分隔符。两个单引号之间没有任何符号,也没有空格
这样就达到了去逗号的效果:[1wR5]
'''
if passwd not in Allpasswd:
Allpasswd.append(passwd)
'''
如果以上步骤完成后生成的这个密码不在Allpasswd这个列表中那么就添加进去,下面frequency+=1就是密码数量加一
如果生成的密码在Allpasswd这个列表中,也就是说生成了同样的密码,那么这次生成的密码作废,frequency-1,再次循环一次
'''
else:
frequency -= 1
frequency += 1
for i in Allpasswd:
print(i) #打印所有生成的密码
def main():
a = eval(input("请输入要生成几位密码:"))
b = eval(input("请输入生成几个密码:"))
makepasswd(a,b) #调用上面的函数
main() #调用main()函数
Python在26个字母大小写和9个数字组成的列表中随机生成8位密码。
最新推荐文章于 2020-11-30 18:45:53 发布