用python写一个密码生成器函数

本文介绍了如何使用Python编写一个密码生成器函数,该函数遵循特定规则:至少包含一个大写字母、小写字母、数字和特殊字符,长度在8到20位之间。通过命令行交互设置密码长度,通过ASCII码和字符串匹配方法进行检验。文中提供了完整的代码实现和运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用python写一个密码生成器函数


## 本文流程

  1. 密码要求
    我们对密码生成器的要求是:
    至少包含一个大写字母(A~Z)
    至少包含一个小写字母(a~z)
    至少包含一个数字(0~9)
    至少包含一个特殊字符(~!@#$%^&*)
    长度可以自由设置,范围是 8~20
    通过命令行进行交互,如设置密码长度
  2. 分析
    -博主第一想法是在函数内部先写一个生成指定长度的密码并检验是否符合要求的循环结构,关于生成密码字符串,博主的想法是用Ascii码对应的字符填充指定长度的列表。
    -如图
 for i in range(CodeLen):
     CodeGenerate[i] = chr(random.randint(32, 127))

对于检验部分,观察到大小写字母对应字符的Ascii是连续的,可以分别检验,在本文中按照要求中的顺序进行检验,而对于特殊字符,其Ascii码没有这种规律性,所以我想直接用"~!@#¥%^&*()"这个字符串,判断字符串中是否有一个元素在密码列表中。
2. 代码实现
检验A~Z是否至少有一个在密码中

        num1=0
        list1=[0]*26
        bool_1=[0]*26
        for j in range(65,91) :
        #A~Z的Ascii码为65~90
            list1[num1]=chr(j)
            num1+=1
        for i in range(26):
            bool_1[i]=list1[i] in CodeGenerate
            #用一个列表存储A~Z这些字母是否在密码中的结果
        if True in bool_1:
            #如果True in bool_1为真,则说明至少有一个大写字母在密码中
            pass
        else : continue
          #这个else用于密码中不包含大写字母时跳出此次循环,继续生成下一个随机密码

检验a~z是否至少有一个在密码中

        num1 = 0
        list1 = [0] * 26
        bool_1 = [0] * 26
        for j 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值