# 第46期-激活码生成器

Python是一门需要不断实践练习的编程语言,本文档将AI大学堂学员交流群的Python每周练习进行汇总,希望各位小伙伴能够多进行实践练习,逐渐爱上这门神奇的编程语言,掌握它并在生活中能够使用它。

# 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

第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函数将列表中的各种元素连在一起

代码运行结果为:
image.jpg

# 4 视频解析

高清视频讲解,请查看AI大学堂Python基础实战100例 (opens new window)
关注『讯飞AI大学堂』公众号,发送 python100 即可领取Python基础实战100例源代码
AI大学堂公众号.png

更新于: 12/28/2021, 7:43:14 AM