題目是這樣子的:
做為 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
轉載時必須以鏈接形式注明原始出處及本聲明。