生成隨機驗證碼的方法

2022-08-03 19:06:17 字數 3904 閱讀 6119

1、借助列表

import random

def random_code():

random_list =

for i in range(4

): ra = random.randrange(4

)

if ra ==i:

97,122

)))

else

:0,9

))) code = ""

.join(random_list)

return

code

result =random_code()

print(result)

上述**實現了隨機驗證碼的功能,但是只能生成包含小寫字母的隨機驗證碼;並且我們也是借助列表完成的,字串的拼接加上列表,字串jion()方法,生成了隨機驗證碼。下面我們來嘗試也生成大寫驗證碼的方法。

import random

def random_code():

random_list =

for i in range(4

): ra = random.randrange(4

)

if ra ==i:

97,122

))) elif ra >i:

0,9)))

else

:65,90

))) code = ""

.join(random_list)

return

code

result =random_code()

print(result)

由於資料之間有三種關係,大於,小於,等於,這樣把每種情況都進行分析,就能生成三種隨機驗證碼;當等於的時候生成小寫驗證碼,等大於的時候生成數字,當小於的時候生成大寫字母驗證碼,這樣就實現了我們在**上面常見的驗證碼的形式。

2、字串拼接

import random

def verification_code():

code = ""

for i in range(1,5

): ra = random.randint(1,4

)

if ra ==i:

string = chr(random.randrange(97,122

)) elif ra >i:

string = chr(random.randrange(65,90

))

else

:

string = str(random.randint(0,9

)) code += string

return

code

result =verification_code()

print(result)

此方法就是使用字串的拼接生成的隨機驗證碼,其實上述方法的本質都是一樣的,可能第一種方法的效率還會更高一點,但是都實現了隨機驗證碼的功能。

二、生成賬單流水號的方法

import datetime,time

def serial_number():

serial = "

".format(datetime.datetime.now().strftime("

%y%m%d%h%m%s

"),str(int

(time.time())))

return

serial

message =serial_number()

print(message)

賬單流水號是由日期datetime模組和time模組構成,由於流水號就是當時購物的時間串號,而且永遠不會重複。

time模組中的起始時間是從2023年開始的

邏輯判斷函式:

def input_date(msg,default_date):

''' 對輸入的日期進行判斷是否正確,yyyy-mm--dd or yyyy-m-d

:param msg:         輸入提示資訊

:param default_date:    預設日期

:return

:           返回日期str型別

''' check_flag =false

while

not check_flag:

strdate =input(msg).strip()

ifnot strdate: #如果使用者輸入的不是空,則不執行,如果使用者輸入的是空,則執行

strdate =default_date

try:

date_list = strdate.split("-"

) print(

"\033[33mdate_list:\033[0m

".format(date_list))

result = date(int(date_list[0]),int(date_list[1]),int(date_list[2

])) print(

"\033[31mresult:\033[0m

".format(result))

check_flag =true

except valueerror:

show_message(

"輸入日期不合法,請重新輸入!

","error")

continue

return result.strftime("

%y-%m-%d

")

輸出如下:

請輸入您要確認的日期:

date_list:['2017', '5', '9']

result:2017-05-09

2017-05-09

上述**實現的是,將字串的日期格式,轉換為真正的日期格式,上面**中:

date_list = strdate.split("-")

print("\033[33mdate_list:\033[0m".format(date_list))

result = date(int(date_list[0]),int(date_list[1]),int(date_list[2]))

print("\033[31mresult:\033[0m".format(result))

上述**中,datetime模組中的date()方法將數值轉換為日期格式,和excel中的date()函式功能是一樣的

datetime模組中的date()方法天生具有檢測日期輸入是否合法的功能,datetime.date(year,month,day)裡面約定了month的範圍是1-12,同時day也是

有約定的,如下:

>>> datetime.date(2017,15,36)

traceback (most recent call last):

file "", line 1, in

valueerror: month must be in 1..12

>>> datetime.date(2017,12,40)

traceback (most recent call last):

file "", line 1, in

valueerror: day is out of range for month

可以看出,如果月份,天數錯誤的話,會提示valueerror錯誤,這樣就能夠讓我們方便很多檢測錯誤,只要使用try,except就能讓使用者重新輸入正

確的日期。

驗證碼隨機生成

pip install captcha驗證碼隨機生成 python 版本 3.6 captcha 版本 0.3 from captcha.image import imagecaptcha import numpy as np import matplotlib.pyplot as plt from...

隨機生成驗證碼

coding utf 8 created on mon sep 16 01 21 02 2019 author administrator import random from captcha.image import imagecaptcha import numpy as np from pil...

隨機生成驗證碼

private static int r private static int g private static int b private static stringbuffer buffer public static final char chars public static random ...