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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值