1、生成固定长度的数字、字母和特殊字符混合的字符串(定义一个类,写在方法里)
import string
import random
class test():
def function(self):
list = [chr(i) for i in range(65,91)] + [chr(i) for i in range(97,123)] + [ str(i) for i in range(10)] + ['.','-','~','_']
#大写字母+小写字母+数字 +特殊字符
num = random.sample(list,10) #输出10个固定长度的组合字符
str1=''
value = str1.join(num) #将取出的十个随机数进行重新合并
print (value)
#这里定义了类和方法,如果只要功能,直接取方法里的内容即可
a = test()
a.function()
2、生成固定长度不以数字开头的数字、字母和特殊字符混合的字符串(直接写)
import random
list = [chr(i) for i in range(65,91)] + [chr(i) for i in range(97,123)] + [ str(i) for i in range(10)] + ['.','-','~','_']
#大写字母+小写字母+数字 +特殊字符
num = random.sample(list,10) #输出10个固定长度的组合字符
str1=''
value = str1.join(num) #将取出的十个随机数进行重新合并
if not value[0].isdigit():
print (value)
3、生成可自定义长度的数字、字母和特殊字符混合的字符串(有参数,可直接放在代码里,不用担心函数返回‘NONE’)
import random
def strGen(num):
list1= [chr(i) for i in range(65,91)] + [chr(i) for i in range(97,123)] + [ str(i) for i in range(10)] + ['.','-','~','_']
value=""
for i in range(num):
value = value + list1[random.randint(0, len(list1)-1)]
return value
strGen(random.randint(1,100)) #随机取[1,100]之间的数字,对应生成相应的字符
下面这么写,更清楚:
a = random.randint(1,100)
print(a)
print(strGen(a))
注意:
1、python类里的方法都要加个self变量,否则会报错
Traceback (most recent call last): TypeError: function() takes 0 positional arguments but 1 was given
2、方法写在类里,如果没有创建对象,会报找不到方法的错误
Traceback (most recent call last): NameError: name 'openUrl' is not defined
链接:莫依痕 https://www.jianshu.com/p/2aed19406328
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
其它:
随机选取列表中三个元素字符串
import random
table = ['剪刀', '石头', '布']
print(random.choice(table))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 需求如下:
# 生成包含数字,大小写和特殊字符的字符串,总长度为8,数字,大小写,特殊字符至少都要有一位
# 生成包含数字,开头可以是(大小写或数字或特殊字符的字符串),总长度为8,数字,大小写,特殊字符至少都要有一位
# 代码如下
import random,string#调用random、string模块
def GenPass():
src_digits = string.digits#string_数字'0123456789'
src_uppercase = string.ascii_uppercase#string_大写字母'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
src_lowercase = string.ascii_lowercase#string_小写字母'abcdefghijklmnopqrstuvwxyz'
src_special = string.punctuation#string_特殊字符'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
#sample从序列中选择n个随机独立的元素,返回列表
num = random.sample(src_digits,1)#随机取1位数字
lower = random.sample(src_uppercase,1)#随机取1位小写字母
upper = random.sample(src_lowercase,1)#随机取1位大写字母
special = random.sample(src_special,1)#随机取1位大写字母特殊字符
other = random.sample(string.ascii_letters+string.digits+string.punctuation,4)#随机取4位
# 生成字符串
#print(num, lower, upper, special, other)
#下面可以调整变量顺序
pwd_list = num + lower + upper + special + other
# shuffle将一个序列中的元素随机打乱,打乱字符串;去掉下面一行,就可自定义字符串开头的'字符'
#random.shuffle(pwd_list)
# 列表转字符串
password_str =''.join(pwd_list)
print(password_str)
GenPass()