码迷,mamicode.com
首页 > 编程语言 > 详细

python练习——第1题

时间:2020-02-17 14:21:11      阅读:101      评论:0      收藏:0      [点我收藏+]

标签: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

python练习——第1题

标签:pytho   dom   网上   方式   ber   第一个   组成   ima   import   

原文地址:https://www.cnblogs.com/Dzha/p/12321419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!