封装功能:实现功能可以返回随机的 10 个数字,随机的 10 个字母,随机的 10 个字母和数字的组合;
解决问题:用于生成强密码数据;
import random
class random_letter_digit(object):
def __init__(self):
self.lowercase = list(map(lambda x:chr(x),range(97,123)))
self.uppercase = list(map(lambda x:chr(x),range(65,91)))
self.digit = '1234567890'
self.type_value = {0:self.digit,1:self.lowercase,2:self.lowercase }
def get_lowercase(self):
return self.lowercase
def get_uppercase(self):
return self.uppercase
def get_digit(self):
return self.digit
def get_random_letter_digit(self,num,targ=None):
if targ is None:
return '请选择随机数的类型,0表示数字,1表示字母,类型用逗号分隔'
if len(targ)==1:
return ''.join(list(map(lambda x:random.choice(self.type_value[targ[0]]),range(num))))
else:
while 1:
combination = []
for i in range(len(targ)):
combination.append(random.randint(1,num))
if sum(combination)==num:
print('组合',combination)
break
result = []
for j in range(len(targ)):
result += list(map(lambda x:random.choice(self.type_value[targ[j]]),range(combination[j])))
random.shuffle(result)
return ''.join(result)
if __name__ == '__main__':
rld = random_letter_digit()
print(rld.get_lowercase())
print(rld.get_uppercase())
print(rld.get_digit())
#'请选择随机数的类型,0表示数字,1表示字母,类型用逗号分隔'
print(rld.get_random_letter_digit(10,targ=[0,1]))