您的位置:首页 > 编程语言 > Python开发

Python 练习册--生成唯一激活码(邀请码)

2016-03-19 14:07 513 查看

题目是这样子的:


做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?



分析

其实要生成激活码(邀请码)也是很简单的事, 比如随机生成.或者使用GUID,UUID等,非常简单

但是我们得考虑存入以及验证的问题.

这里我参考产生唯一随机码的方法分析。这篇文章的思路:

主键+随机码的方式.

这种方法优点:使用也比较简单,不用直接去查询数据库,而最大的优点是查询的时候,可以根据邀请码直接得到主键id, 然后根据id去数据库查询(速度很快),再比较查询出来的邀请码和用户提交的邀请码是否一致。

生成:id(数据库primary key )->16进制 + "L(标识符)" +随机码

获取id:获取16进制的id再转回10进制

实现

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import random
import string

def activation_code(id,length=10):
'''
id + L + 随机码
string模块中的3个函数:string.letters,string.printable,string.printable
'''
prefix = hex(int(id))[2:]+ 'L'
length = length - len(prefix)
chars=string.ascii_letters+string.digits
return prefix + ''.join([random.choice(chars) for i in range(length)])

def get_id(code):
''' Hex to Dec '''
return str(int(code.upper(), 16))

if __name__=="__main__":
for i in range(10,500,35):
code = activation_code(i)
id_hex = code.split('L')[0]
id  = get_id(id_hex)
print code,id

运行结果:

aLp5EzM4D2 10
2dL8TuFB2o 45
50LklqcpNp 80
73La8yOuo1 115
96LavIm2bS 150
b9LZd4PV3D 185
dcL05As00w 220
ffLeD0sy3C 255
122Lgi6YGs 290
145Ljin1B5 325
168L1k7ypr 360
18bL1RYoIE 395
1aeLaMAKrT 430
1d1LHbYL7X 465


参考地址:

产生唯一随机码的方法分析。

如何才能生成一个唯一的随机数

版权属于:Linsir's Blog

原文地址:http://linsir.org/post/Creat-the-unique-activation-code-with-python

转载时必须以链接形式注明原始出处及本声明。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: