Python在26个字母大小写和9个数字组成的列表中随机生成8位密码。

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()函数
  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值