Python読書ノート-毎日編-20190219|アクティブコードジェネレータ
質問説明: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()