立即學習:https://edu.csdn.net/course/play/24458/296448?utm_source=blogtoedu
定時器:threading.Timer
1.概念:定時器就是實現過多久去執行什么事情
?
2.相關函數
1)Timer(self,interval,function,args=())
interval:定時的時間
function:需要執行的事件,一般是函數名,不需要帶括號
args:參數
?
2)t = Timer(...)
實際上就是一個線程,使用:
t.start()開始,
t.cancel()結束
?
3)random
random.randint(0,9):生成從0到9的任意隨機整數(65-90的ascill碼對應的是字母的大小寫)
random.choice([s1,s2,....]):從列表中任選一個
?
3.代碼
'''
這里利用一個生成驗證碼的例子來說明定時器的功能與使用
'''#導入模塊
from threading import Timer
import random
import time#創建生成驗證碼的類
class code():#一般驗證碼是由數字和字母組成,共4位#創建生成驗證碼的函數def make_code(self,n=4):#n是驗證碼的位數res=''for i in range(n):#生成字符串型的整數,字符串才能拼接,randint()生成一定范圍內的任意整數s1 = str(random.randint(0,9))#生成字母,大小寫字母的asill碼位于65-90之間s2 = chr(random.randint(65,90))#在s1\s2中任選組成四位驗證碼,random.chioce()res+=random.choice([s1,s2]).strip()#strip()將空格去掉return res#創建定時更新驗證碼的函數def updata_code(self,interval=10):#獲取隨機生成的驗證碼self.new_code = self.make_code()#將驗證碼返回到類作為類中的全局變量,實現驗證碼的變動print(self.new_code)self.t = Timer(interval,self.updata_code)#將t設置為類中的全局變量self.t.start()#創建輸入驗證碼的函數def input_code(self):while True:self.updata_code()res = input('請輸入正確的驗證碼>>>:')if res.upper() == self.new_code:print('驗證碼正確')self.t.cancel()#停止定時器breakelse:print("驗證碼不正確,10s后重新輸入")if __name__ == '__main__':obj = code()obj.input_code()
?