本题的链接来自https://github.com/Yixiaohan/show-me-the-code

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

解析

首先个人感觉,这题主要是让我们认识和学会UUID

python官方文档UUID DOC

可以看看这位博主的对于UUID的讲解博客链接

它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。UUID主要有五个算法,也就是五种方法来实现:

 1、uuid1()——基于时间戳

         由MAC地址、当前时间戳、随机数生成。可以保证全球范围内的唯一性,
         但MAC的使用同时带来安全性问题,局域网中可以使用IP来代替MAC。

 2、uuid2()——基于分布式计算环境DCE(Python中没有这个函数)

          算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。
          实际中很少用到该方法。

3、uuid3()——基于名字的MD5散列值

          通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性,
          和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid。    

 4、uuid4()——基于随机数

          由伪随机数得到,有一定的重复概率,该概率可以计算出来。

 5、uuid5()——基于名字的SHA-1散列值

代码

#coding:utf-8
import uuid
def generate(): #生成uuid序列
    return str(uuid.uuid4()).replace('-','')

if __name__ == '__main__':
    li = []
    for i in range(200): #生成200个
        while(True):
            s = generate()
            if not s in li: #判断生成的uuid是否存在于之前的序列中,如果存在重新生成
                li.append(s)
                break
    for l in li: #输出序列
        print(l)