1. 程式人生 > 其它 >第46期-啟用碼生成器

第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()))
View Code

第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函式將列表中的各種元素連在一起

程式碼執行結果為: