原GitHub地址:https://github.com/Yixiaohan/show-me-the-code
題目:做為 Apple Store App 獨立開發者,你要搞限時促銷,為你的應用生成激活碼(或者優惠券),使用 Python 如何生成 200 個激活碼(或者優惠券)?
代碼:
#coding=utf-8
import random, string
number = 20 # 激活碼的數量
length = 12 # 激活碼的長度
box = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' # 激活碼的組成元素
keys = {} # 用于保存生成的激活碼
temp_key = ''.join(random.sample(box, length)) # 生成第一個激活碼
k = 0 # 激活碼的索引
keys[k] = temp_key
while(True):
temp_key = ''.join(random.sample(box, length))
for j in list(keys.keys()): # 判斷新生成的激活碼是否和以前的相同
if keys[j] == temp_key: # 如果相同則重新生成
break
elif j == (len(keys) - 1): # 如果新生成的激活碼和之前的激活碼都不一樣,則將新激活碼加入keys
k += 1
keys[k] = temp_key
else:
continue
if k == number - 1: # 已經生成足夠的激活碼,則結束
break
for i in keys:
print(keys[i])
效果如下:

分析:
這道題主要就是需要懂得如何將字母和數字以隨機的方式組合起來,還有就是要保證生成的激活碼沒有重復的,因為每生成一個新激活碼都要和已有的其他激活碼比較是否相同,所以程式時間復雜度為O(n^2),比較慢,
在網上看見另外一種簡便的方法:
import uuid
uuids = []
for i in range(200):
uuids.append(uuid.uuid1())
print uuids
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/194150.html
標籤:Python
