python练习——第1题

题目:做为 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])

效果如下:
python练习——第1题

分析:
这道题主要就是需要懂得如何将字母和数字以随机的方式组合起来,还有就是要保证生成的激活码没有重复的。因为每生成一个新激活码都要和已有的其他激活码比较是否相同,所以程序时间复杂度为O(n^2),比较慢。

在网上看见另外一种简便的方法:

import uuid

uuids = []
for i in range(200):
    uuids.append(uuid.uuid1())
print uuids

相关推荐