使用python指定个数随机生成一组混合字符集

今天做测试想生成混合的id或者密码,思考了有很多方式,比如可以加入datetime库,然后截取一部分,或者随机生成一部分,进行替换,添加.

这里采取一种简单易懂的方式

一.运行结果示范

就是这种效果:

生成多少位数:18
^ry3Gu#aVr8VV(41%8

u1i2T!KsT~%^6Faf61

二.实现步骤

1.首先导入random库,我这里区别名为r

import random as r

2.然后因为我想掺杂包含大小写的字母,数字,字符等等,所以采取字符串的方式来做

S_list = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ01234567890123456789+-*/.,!`~@#$%^&*()="

这里为了提高数字出现的次数,我多加了几组,然后考虑用random中的choice进行随机选择一个,进行循环

3.那么定义一个列表函数,将o作为列表的原始数据以便于后面的替换,这里range(1,a),a由用户输入

def list_x():
    o = r.choice(S_list)
    y = [o]
    for i in range(1, a):
        y[i] = y.append(o)
    return y

4.定义另一个函数,并将列表函数嵌套调用,将list_x()函数中添加好的值以迭代的方式进行传递给m,并将每一个下标循环赋值

def rand_code(n):
    m = list_x()
    for i in range(1, n):
        m[i] = r.choice(S_list)

    return m

5.最后,调用主函数并用map转换为字符串格式输出

a = int(input("生成多少位数:"))
x = rand_code(a)
x = ''.join(map(str, x))
print(x)

三.完整代码

# _*_ coding:utf-8 _*_
# @Time    : 2022/9/7 16:56
# @Author  : ice_Seattle
# @File    : 随机id.py
# @Software: PyCharm


import random as r
S_list = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ01234567890123456789+-*/.,!`~@#$%^&*()="


def list_x():
    o = r.choice(S_list)
    y = [o]
    for i in range(1, a):
        y[i] = y.append(o)
    return y


def rand_code(n):
    m = list_x()
    for i in range(1, n):
        m[i] = r.choice(S_list)

    return m


a = int(input("生成多少位数:"))
x = rand_code(a)
x = ''.join(map(str, x))
print(x)


运行结果

生成多少位数:12
X5cVX83,U=74

四.疯狂一把:

输出了很多,只截图了部分

扩展想法:可以在对应生成的字符进行算法加密,一定很好玩

猜你喜欢

转载自blog.csdn.net/qq_53521409/article/details/126753094