码迷,mamicode.com
首页 > 其他好文 > 详细

0001

时间:2015-05-07 23:28:04      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

又一天过去了,今天上午写了一下练习,下午老黄让我跟另外两个男生一起坐图像识别,或许是创新项目吧,试试团队的力量也不错。

回归正题:

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

想法只有一个解决方案,那就是把字母的随机数与数字的随机数放在一起就是激活码了,后来就想不到其他方法,参照了这几个算法:http://www.blogjava.net/BearRui/archive/2010/10/19/unique_random_code.html,然后根据这四个算法,写出了如下三种解决方案:

1、代码如下:

 1 # coding=utf-8
 2 __author__ = wing1995
 3 """
 4 单纯的随机数字和字母的组成
 5 """
 6 import string as s
 7 import random as r
 8 
 9 
10 def ranDom():
11     f = open(随机激活码.txt, w+)
12     for i in range(200):
13         random_str = ‘‘.join(r.choice(s.ascii_uppercase + s.digits) for x in range(10)) + \n
14         f.write(random_str)
15     f.close()
16 
17 if __name__ == __main__:
18     ranDom()

优点:或许是头脑简单吧,一般人都想得出来。

缺点:当数据量比较大的时候,重复的可能性大。

2、

 1 # coding=utf-8
 2 __author__ = wing1995
 3 """
 4 直接使用uuid模块
 5 """
 6 import uuid as u
 7 
 8 
 9 def rand_uuid():
10     f = open(随机激活码_1.txt, w+)
11     for i in range(200):
12         ID = str(u.uuid1()) + \n
13         f.write(ID)
14     f.close()
15 
16 if __name__ == __main__:
17     rand_uuid()

优点:因为是借助别人写的模块,因此代码简单。

缺点:产生的数据量较大,而且差别不是很大

3、

 1 # coding=utf-8
 2 __author__ = wing1995
 3 """
 4 使用主键和随机码
 5 """
 6 import string as s
 7 import random as r
 8 
 9 
10 def rand_ID():
11     f = open(随机激活码_2.txt, w+)
12 
13     for i in range(200):
14         ID = id(i)
15         rand_id = str(ID)[5:]  # 选取id的后面5位数字
16         null = ‘‘
17         for j in rand_id:
18             null += j + r.choice(s.ascii_uppercase)  # 在每一个数字后面添加一个大写字母
19         f.write(null + \n)
20     f.close()
21 
22 if __name__ == __main__:
23     rand_ID()

优点:使用简单,可以直接根据激活码得出id

缺点:按道理是有的,如果id是根据数据库的主键编号得来的话

其实还有第四种方法:

先获取id,然后将id转换为8进制,并转换成字符串,在字符串后面加一个固定的字符例如“9”,最后在这串字符串后面加上随机的数字,得到的就是随机的数字激活码了。但是觉得方法跟第三类差不多,只不过是一种钥匙而已,还有人说用MD5就可以生成唯一的值,也有理。这就像是密码学里面的明文和密文的关系。

晚安!

 

0001

标签:

原文地址:http://www.cnblogs.com/wing1995/p/4486370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!