封裝功能:實現功能可以返回隨機的 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]))