第46期-激活码生成器
1 问题描述
假如你要为一个应用搞限时促销,生成激活码(或者优惠券),请用 Python 如何生成 200 个激活码(或者优惠券)。激活码的格式为asqE-9xRK-lqWU-QkMT
要求1:使用随机生成时,生成数字概率为1/5,大写字母和小写字母概率各为2/5
要求2:200个激活码
2 解题思路
- 第一步: 由于有生成概率,所以需要使用random模块
- 第二步: 生成200个激活码,for或者while循环
3 解题方法
import random def gen(x): if x <= 0.4: return random.choice( ['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P', 'L', 'K', 'J', 'H', 'G', 'F', 'D', 'S', 'A', 'Z', 'X', 'C', 'V', 'B', 'N', 'M']) elif x <= 0.8: return random.choice( ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'l', 'k', 'j', 'h', 'g', 'f', 'd', 's', 'a', 'z', 'x', 'c', 'v', 'b', 'n', 'm']) else: return random.choice(['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']) def gen1(): a = [''] * 19 for i in range(19): x = random.random() if (i + 1) % 5 != 0: a[i] = gen(x) else: a[i] = '-' return a for _ in range(200): print(''.join(gen1()))
第1行: 引入random随机模块
第2行: 创建函数gen(x)用于为各个数字及字母设置出现概率,其中自变量x为0-1之间随即出现的浮点型小数
第3-6行: 当x<=0.4时,即出现概率为4/10即0.4,随机选择大写字母中的一个
第7-10行: 当0.4<x<=0.8时,即出现概率为4/10即0.4,随机选择小写字母中的一个
第11-12行: 其他情况下即x>0.8时,即出现概率为2/10即0.2,随机选择一个数字
第13行: 创建函数gen1()用于随机生成激活码
第14行: 由于一个激活码内19个元素,创建列表a并为其内部添加19个元素
第15-16行: for循环运行19次,并为x赋值0-1的随机浮点型小数
第17-18行: 当循环次数不是5的倍数时,给a列表中的对应位置赋值gen(x)函数生成的随机数字或字母
第19-20行: 当循环次数是5的倍数时,给a列表中的对应位置赋值激活码中的字符'-'
第21行: 将列表a返回给函数值
第22行: 循环200次
第23行: 输出200个激活吗,join函数将列表中的各种元素连在一起
代码运行结果为: