Python読書ノート-毎日編-20190219|アクティブコードジェネレータ

2466 ワード

質問説明:Apple Store Appの独立開発者として、時間制限セールをして、あなたのアプリケーションのためにアクティブコード(またはクーポン)を生成して、Pythonを使ってどのように200のアクティブコード(またはクーポン)を生成しますか?
需要分析:
  • アクティブコードの数は調整可能であり、その後
  • を追加することができる.
  • アクティブコード長は
  • に調整可能である.
  • アクティブコードは、
  • を繰り返すことができない.
    コード作成:
    #! /usr/bin/env python3
    # Filename : generator.py
    
    import os,sys
    import string,random
    
    #       
    field = string.ascii_letters + string.digits     
          
    class generator(object):
        #       
        file_name = ''
        #   
        data = []
        #      
        data_append = []
        #         
        need_num = 0
        #         
        cur_num = 0
        #       
        length = 0
    
        def __init__(self, length =16,need_num=100):
            self.length = length
            self.need_num = need_num
            self.file_name = os.getcwd() + os.sep + "generator.txt"
            #          
            self.load()
            
        def load(self):
            try:
                with open(self.file_name,"r") as file:
                    for line in file.readlines():
                        self.data.append(line)
            except FileNotFoundError:
                if __name__ == "__main__":
                    print("     ,     ")
            except:
                if __name__ == "__main__":
                    print("    {%s},    =>"%sys.exc_info()[0])
    
        def generate(self):
            while self.cur_num < self.need_num:
                #       
                rand = self.__get_one() 
                self.data_append.append(rand)
                self.cur_num +=1
            #  
            self.data.append(self.data_append)
            with open(self.file_name,"a") as file:
                file.write("
    ") file.writelines("
    ".join(self.data_append)) def generate_one(self): # rand = self.__get_one() self.data.append(rand) with open(self.file_name,"a") as file: file.write("
    ") file.write(rand) def __get_one(self): rand = ''.join(random.sample(field,self.length)) while(rand in self.data): rand = random.sample(field,self.length) if __name__ == "__main__": print("[ ]=>%s"%(str(rand))) return rand if __name__ == "__main__": generator = generator() # 。 100 generator.generate() # generator.generate_one()