使用random.sample(s,k)方法
#驗證碼功能
import random
def codecheck():
s = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
while True:
rand_list = random.sample(s, 4) #隨機從0~9中匯入四個數位,儲存在rand_list裡面(可以包含大小寫字母,改動主函數中列表S的元素即可)
str1 = [str(n) for n in rand_list] #將rand_list中的int型全部轉換為str型,並儲存在str1裡面
#不能直接使用join方法將rand_list直接轉換合併為一個字串,原因略
code = ''.join(str1) #將str1中元素合併成一個字串
print('驗證碼:%s'%code)
input1 = input("請輸入驗證碼:")
if input1 == code: #比對兩個字串的內容
print("驗證成功")
break #成功,跳出
else:
print("驗證失敗")
PS:sample這個方法直接從列表裡挑選指定個數的元素隨機輸出,個人認為比較方便,也可以在列表裡新增大小寫字母,以及符號生成混合驗證碼。
PPS:可以直接在列表裡把數位以字串型別存放,免去了上面程式碼中將列表rand_list中元素放入列表str1並轉換為字串型別的步驟