首页 > 代码库 > 20170512 Python练习册0001生成激活码

20170512 Python练习册0001生成激活码

#!/usr/bin/env python
# -*-coding:utf-8-*-

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

import string
import random

Key_len = 20
Key_all = 200

def base_str():
return (string.ascii_letters + string.digits) #生成所有的字母和数字
def key_gen():
key_list = [random.choice(base_str()) for i in range(Key_len)]#随机选择上一个函数生成的字母和数字,生成一个长度为20的序列
return (‘‘.join(key_list))#合并序列里面的内容,不合并就是这样[‘f‘, ‘Z‘, ‘V‘, ‘V‘, ‘Z‘, ‘d‘, ‘n‘, ‘c‘, ‘1‘, ‘1‘, ‘i‘, ‘k‘, ‘b‘, ‘i‘, ‘G‘, ‘5‘, ‘d‘, ‘Z‘, ‘q‘, ‘L‘]
def key_num(num,result=None):
if result is None:#这一句估计就是用来创建一个空列表,删了这一句直接创建空列表也可以用,感觉没必要这么复杂
result = []
for i in range(num):
result.append(key_gen())#将key_gen()生成的激活码添加到这个空列表中,添加num个
return result
def print_key(num):
for i in key_num(num):
print(i)#打印出result中的每一个元素
if __name__==‘__main__‘:
print_key(Key_all)#调用函数

需要用到的知识有:转载自:https://blog.tanteng.me/2015/07/python3-ascii-letters/

本文介绍Python3中String模块ascii_letters和digits方法,其中ascii_letters是生成所有字母,从a-z和A-Z,digits是生成所有数字0-9.

示例如下:

>>> chars = string.ascii_letters + string.digits
>>> print(chars)
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

生成所有字母和数字干什么?在哪个场景中会用到呢,举个例子:比如生成激活码(优惠券),激活码一般都是字母和数字组成的,首先要有一个所有字母和数字的字符串,然后随机取出几个字母或数字。

import random, string
def rand_str(num, length=7):
    f = open(‘Activation_code.txt‘, ‘w‘)
    for i in range(num):
        chars = string.ascii_letters + string.digits
        s = [random.choice(chars) for i in range(length)]
        f.write(‘{0}\n‘.format(‘‘.join(s)))
    f.close()
if __name__ == ‘__main__‘:
    rand_str(200)

执行结果片段:

wz0dajI
25vlulV
zLHkx9Y
GGzu0Ip
RilbYKW
4WZL2IC
4syobYw
kCMky7O
oUPde55
KrMRmUX
Ct0W2Pm
wMwpPdk
ydPuy9h
Z7vo3r9
emcmQl0
GeIDKw3
PK9BLvg
z4xNdVb
I0EGA9O
YPUh5UA
69gISVt
Xun7GI3
YufPaD0
DsYZx2Q
3JfW1bh
ydHELg6
NxNMRBa

20170512 Python练习册0001生成激活码