需求;
1.随机生成12位密码
2.密码包括大小写字母,数字,以及特殊字符
3.大小写字母跟特殊字符长度没有写死的规定,是需要随机生成0-3位的,可以是1个,2个,3个都是可以的。
# 思路 先写四个不同的列表,24个大写字母的,24个小写字母,0-9的数字列表,以及特殊字符的列表,然后随机生成,在进行拼接,在打乱
# 这里主要是以ascii码去表示上诉的字符串
#表示26个字母,查询ascci码的表示是65, 90,但是我是使用range表示,左闭右开,步长为一
import random
total_len = 12 #密码总长为12
daxiezimu = range(65,91, 1) # 定义26个大写字母列表
xiaoxiezimu = range(97, 123, 1) # 定义26个大写字母列表
shuzi = range(48, 58, 1) # 定义0-9个数字
teshuzifu = [64, 63, 96] # 定义特殊字符@ ? \ 特殊字符就给了一个列表,因为assci码没有连续的
random3_list = [daxiezimu, xiaoxiezimu, teshuzifu]
for i in random3_list: # 循环需要随机生成0-3位的大小写字母跟特殊字符
for j in range(random.randint(1, 3)): # 随机循环0-3的次数
res.append(chr(random.choice(i))) # chr将ascii码转为字符 random.choice(i)随机从i中取出一个数
x = total_len - len(res) #需要生成x位长度的数字
for k in range(x): #需要生成多少位的数字就循环几次
res.append(chr(random.choice(shuzi)))
random.shuffle(res) # random.shuffle(列表对象) 用来打乱列表