今天做测试想生成混合的id或者密码,思考了有很多方式,比如可以加入datetime库,然后截取一部分,或者随机生成一部分,进行替换,添加.
这里采取一种简单易懂的方式
一.运行结果示范
就是这种效果:
生成多少位数:18
^ry3Gu#aVr8VV(41%8u1i2T!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
四.疯狂一把:
输出了很多,只截图了部分
扩展想法:可以在对应生成的字符进行算法加密,一定很好玩