用python写一个密码生成器函数
## 本文流程
密码要求
我们对密码生成器的要求是:
至少包含一个大写字母(A~Z)
至少包含一个小写字母(a~z)
至少包含一个数字(0~9)
至少包含一个特殊字符(~!@#$%^&*)
长度可以自由设置,范围是 8~20
通过命令行进行交互,如设置密码长度- 分析
-博主第一想法是在函数内部先写一个生成指定长度的密码并检验是否符合要求的循环结构,关于生成密码字符串,博主的想法是用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