生活中,我們經常使用驗證碼完成登錄贮庞、注冊等功能峦筒,那python中如何隨機生成驗證碼呢?先拿四位驗證碼練練手窗慎,要求如下物喷。 第一位:數字卤材、第二位:大寫字母、第三位:小寫字母峦失,第四位:隨機(數字扇丛,大小寫字母)。
首先來個常規(guī)做法:
import random
def yzma1():
nums = list(range(10))
var1=[]
var2=[]
for i in range (65,91):
var1.append(chr(i))
for i in range(97,123):
var2.append(chr(i))
n1 = str(random.choice(nums))
n2 = random.choice(var1)
n3 = random.choice(var2)
n4 = str(random.choice(nums + var1 + var2))
return n1 + n2 + n3 + n4
nums = list(range(10))生成數字列表
利用字母的ASCII碼的范圍AZ:(65,91),az:(97,123)
chr(i)尉辑,把數字i轉成字母晕拆,并添加到列表中,生成字母列表材蹬。
random.choice(列表)实幕,在列表中隨機選擇一個元素。
最后把四個隨機元素拼接在一起就可以了堤器。
再來優(yōu)化一下代碼昆庇。
import random
def yzma2():
var1=list(range(10))
var2=[chr(i) for i in range(65,91)]
var3=[chr(i) for i in range(97,123)]
n1=random.choice(var1)
n2=random.choice(var2)
n3=random.choice(var3)
n4=random.choice(var1+var2+var3)
return str(n1)+n2+n3+str(n4)
使用列表推導式:不僅能簡化代碼,更能提高程序運行速度闸溃。
要隨機生成0~9中的隨機整數整吆,還有兩種方法:
random.randrange(10) #默認從0開始,區(qū)間:左閉又開
random.randint(0,9) #特殊的是:左右都是閉區(qū)間
ASCII碼和字符相互轉換:
ord('a')=97
ord('z')=122
ord(' ')=32 #空格
chr(97)='a'
chr(122)='z'