日期: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