idning 2020-02-17
题目:做为 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