隨機驗證碼實現

驗證碼是很多網站登陸注冊的必選項,我們可以使用隨機數來實現這一功能。

需求:產生N位隨機碼,必須有數字和字母組成。

1. 需求分析:

1)隨機碼N位;
2)最少包含1位數字或者1位字母;
3)數字和字母也是隨機產生。

2. 實現思路:
  • 確定數字和字母個數;
#-*-coding:utf-8 -*-
import random
tCode = 5    #隨機碼總數5
numN = random.randint(1, 4) #數字個數1~4之間
numC = tCode - numN
print (numN, numC)

執行結果:2,3(結果是隨機的)

  • 產生相應的隨機數字和隨機字母;
    定義字符串數字和字母,并產生相應的隨機結果:
listN = '1234567890'                 #數字
listC = 'abcdefghigklmnopqrstuvwxyz' #字母
for x in range(numN):                #隨機數字產生
    random.choice(listN) 
for x in range(numC):                #隨機字母產生
    random.choice(listC)
  • 代碼實現:
    使用函數實現該需求:
    函數名:genTcodes
    函數參數:tCodeN,傳入產生隨機數個數
    返回值:隨機碼
    具體代碼如下:
#-*-coding:utf-8 -*-
import random
def genTcodes(tCodeN):
    numN = random.randint(1, 4) #數字個數1~4之間
    numC = tCodeN - numN
    print (numN, numC)

    listN = '1234567890'
    listC = 'abcdefghigklmnopqrstuvwxyz'
    tCodeS = ""                #保存隨機碼
    for x in range(numN):
        tCodeS += random.choice(listN)  #隨機數字
    for x in range(numC):
        tCodeS += random.choice(listC)  #隨機字符
    return tCodeS                       #返回隨機碼
print (genTcodes(5))

執行結果如下:
1 4
4ypwa

總結:簡單的隨機碼程序已經實現,但是我們發現字母和數字的位置不是隨機的,怎么辦?

我們可以將每個位置打亂,實現真正隨機。

這樣就能完美結局這個問題。后續當我們講解列表時候繼續優化這個需求。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容