1、借助列表
import randomdef 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 randomdef 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 randomdef 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,timedef 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 ...