第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?
思路:
首先要弄清楚激活码的构成,不同软件应用生成的激活码都不同,但相同的是,生成的激活码是字母和数字的随机组合,可能是大写,也可能是小写,所以激活码是26个大小写字母和10个数字的随机组合。以生成一个16位的激活码(区分大小写)为例,必然会用到python 的random模块,可以将26个大小写字母和10个数字放在一个集合中,用random随机去取集合中的元素。Random模块相关可以看链接。
random中有一个choice方法,随机选取一个元素,sample方法是随机生成一组元素,在生成激活中可以用到。
代码如下:
#coding=utf-8
import random
list=[]
#生成26个大写的字母
for x in range(65,91):
a=str(chr(x)) #生成对应的ASCII码对应的字符串
list.append(a)
#生成26个小写字母
for x in range(97,123):
a=str(chr(x)) #生成对应的ASCII码
list.append(a)
#生成10个数字
for x in range(10):
list.append(str(x))
'''
def gen_code():
a=random.sample(list,16)
print a
'''
#生成16位激活码
def gen_code():
s=''
for x in range(16):
a=random.choice(list)
s=s+a
print s
#生成200个激活码
for x in range(200):
gen_code()
`
生成16位激活码的时候,也可以用sample方法,选取16个元素,但sample的返回仍是一个list列表,需要遍历连接起来,在进行连接的时候,只有字符串可以通过+连接,所以在生成字母和数字的同时,我将其转换成字符串再保存在list列表中。
有的字符串四五位激活码中间用“-”连接,感觉用sample方法选取元素更方便一点。