封裝2:實現功能可以返回隨機的 10 個數字,隨機的 10 個字母,隨機的 10 個字母和數字的組合;

封裝功能:實現功能可以返回隨機的 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]))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章