【常用模塊】:random模塊之生成隨機驗證碼案例

日期:2020年3月6日
作者:Commas
註釋:學習就是爲了忘記,實現一個生成隨機驗證碼的小案例;
如果您想了解更多有關Python的知識,那麼請點《我的Python淺談系列目錄》



一、random模塊初識

話不多說,直接上代碼來查看random提供了哪些工具:

import random


for x in dir(random):
    if not x.startswith("_"):
        # 過濾掉私有方法
        if x.islower():
            # 過濾掉常量
            print("random.{}()".format(x))


# =======控制檯輸出結果=======
random.betavariate()
random.choice()
random.choices()
random.expovariate()
random.gammavariate()
random.gauss()
random.getrandbits()
random.getstate()
random.lognormvariate()
random.normalvariate()
random.paretovariate()
random.randint()
random.random()
random.randrange()
random.sample()
random.seed()
random.setstate()
random.shuffle()
random.triangular()
random.uniform()
random.vonmisesvariate()
random.weibullvariate()

二、生成隨機驗證碼

上面查看random模塊的工具很多,但是生成隨機驗證碼,只需要兩個工具即可,如下:

工具 說明 說明
randint(a, b) Return random integer in range [a, b], including both end points. 隨機返回一個ab之間(範圍包括ab)的一個整數
choice(seq) Choose a random element from a non-empty sequence. 從非空序列中隨機選出一個元素返回

隨機驗證碼實現如下:

import random


def get_random_code(num_code):
    """
    生成並返回隨機驗證碼
    :param num_code: 隨機驗證碼位數
    """
    list_code = []
    for i in range(num_code):
        # (1)隨機生成三種字符
        # (1-1)隨機生成0~9的數字
        num = str(random.randint(0, 9))
        # (1-2)隨機生成小寫字母
        lower_alphabet = chr(random.randint(97, 122))
        # (1-3)隨機生成大寫字母
        upper_alphabet = chr(random.randint(65, 90))
        # (2)再次隨機抽取一個字符
        random_code = random.choice([num, lower_alphabet, upper_alphabet])
        # (3)保存隨機抽取的字符
        list_code.append(random_code)
    return "".join(list_code)

randon_num = get_random_code(6)
print("生成隨機數:%s" % randon_num)

# =======控制檯輸出結果=======
生成隨機數:JKmwc8

知識加油站:
chr(*args, **kwargs)
Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.
其中0~255(十進制)返回的是ASCII碼對應的字符,可見度孃的《ASCII》
如需瞭解編碼,請看我的另一篇博客《原來編碼就是這麼簡單》

真正的驗證碼還需要做顯示的干擾,比如字符放大縮小,加點加線干預,色彩等等,這些實現都是後話啦……


版權聲明:本文爲博主原創文章,如需轉載,請給出:
原文鏈接:https://blog.csdn.net/qq_35844043/article/details/104693700

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章