zoukankan      html  css  js  c++  java
  • 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. 如何才能生成一个唯一的随机数
  • 相关阅读:
    Round robin
    Linux命令之nslookup
    VLAN
    基础网络概念
    python开发_filecmp
    python开发_stat
    python开发_fileinput
    python开发_os.path
    python开发_bisect
    python开发_copy(浅拷贝|深拷贝)_博主推荐
  • 原文地址:https://www.cnblogs.com/turingbrain/p/5295067.html
Copyright © 2011-2022 走看看