Python 練習冊--生成唯一激活碼(邀請碼)


題目是這樣子的:

做為 Apple Store App 獨立開發者,你要搞限時促銷,為你的應用生成激活碼(或者優惠券),使用 Python 如何生成 200 個激活碼(或者優惠券)?


分析

其實要生成激活碼(邀請碼)也是很簡單的事, 比如隨機生成.或者使用GUID,UUID等,非常簡單

但是我們得考慮存入以及驗證的問題.

這里我參考產生唯一隨機碼的方法分析。這篇文章的思路:

主鍵+隨機碼的方式.

這種方法優點:使用也比較簡單,不用直接去查詢數據庫,而最大的優點是查詢的時候,可以根據邀請碼直接得到主鍵id, 然后根據id去數據庫查詢(速度很快),再比較查詢出來的邀請碼和用戶提交的邀請碼是否一致。

  1. 生成:id(數據庫primary key )->16進制 + "L(標識符)" +隨機碼
  2. 獲取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

參考地址:

  1. 產生唯一隨機碼的方法分析。
  2. 如何才能生成一個唯一的隨機數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM