标签:pytho dom 网上 方式 ber 第一个 组成 ima import
题目:做为 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
标签:pytho dom 网上 方式 ber 第一个 组成 ima import
原文地址:https://www.cnblogs.com/Dzha/p/12321419.html