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
转载时必须以链接形式注明原始出处及本声明。
相关文章推荐
- 关于python2.X的编码问题的转载(后续改用python3爬取搜狗壁纸)
- Python 学习笔记三
- 我的Python成长之路---第七天---Python基础(21)---2016年2月27日(晴)
- python中的静态方法和类方法
- python中的静态方法和类方法
- Python Challenge 7~8
- Python机器学习实战--(k-近邻算法)
- python 编码问题总结
- Python基础语法
- Python小爬虫小总
- python3异步网页抓取
- Python清屏小结
- (4)Python读写csv文件
- (3)Python读写Excel
- python发送邮件
- 欢迎使用CSDN-markdown编辑器
- Python Twisted
- Python学习(变量与字符串)
- 使用Python编写基于DHT协议的BT资源爬虫
- Windows上利用Python自动切换代理IP的终极方案!