python 随机生成密码

需求;

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(列表对象)  用来打乱列表

你可能感兴趣的:(python,开发语言)