本文實(shí)例講述了Python使用當(dāng)前時間、隨機(jī)數(shù)產(chǎn)生一個唯一數(shù)字的方法。分享給大家供大家參考,具體如下:
Python生成當(dāng)前時間很簡單,比Java的代碼簡短多了,Java產(chǎn)生時間可參考《Java獲取當(dāng)前系統(tǒng)事件System.currentTimeMillis()方法》
具體代碼如下:
#-*-coding:utf-8-*- import datetime now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") print now;
運(yùn)行結(jié)果如下,輸出當(dāng)前的時間,時間格式根據(jù)strftime("%Y-%m-%d %H:%M:%S")
而定,相應(yīng)的格式,正如C語言的printf語句那樣簡單。
Python可以利用如下語句產(chǎn)生唯一的隨機(jī)數(shù):
import random; print random.randint(0,100);#生成的隨機(jī)整數(shù)n,其中0<=n<=100
據(jù)此,我們可以利用當(dāng)前時間、隨機(jī)數(shù)產(chǎn)生一個唯一的數(shù)字,用于一些上傳文件,產(chǎn)生文件等場合,
考慮到極端情況,在1秒內(nèi)有1000個用戶上傳文件,也不會出現(xiàn)沖突的最好情況,就是利用當(dāng)前時間+0~1000的隨機(jī)整數(shù),構(gòu)造一個隨機(jī)數(shù)字:
唯一值得注意的是,拼接時間與字符串要轉(zhuǎn)化成字符串才拼接,而不是直接相加,由于Python是沒有變量聲明的,直接相加則變成了數(shù)字之間的相加了。
同時注意,如果隨機(jī)數(shù)隨機(jī)到一個比10少的數(shù)字,應(yīng)當(dāng)在隨機(jī)產(chǎn)生出來的數(shù)字前面補(bǔ)上一個0,使得產(chǎn)生的數(shù)字的位數(shù)是相同的。
具體代碼如下:
#-*-coding:utf-8-*- import datetime; import random; nowTime=datetime.datetime.now().strftime("%Y%m%d%H%M%S");#生成當(dāng)前時間 randomNum=random.randint(0,100);#生成的隨機(jī)整數(shù)n,其中0<=n<=100 if randomNum<=10: randomNum=str(0)+str(randomNum); uniqueNum=str(nowTime)+str(randomNum); print uniqueNum;
以下Python程序,將利用for設(shè)置10個測試用例來測試在一秒內(nèi)產(chǎn)生的結(jié)果,代碼如下:
#-*-coding:utf-8-*- import datetime; import random; for i in range (0,10): nowTime=datetime.datetime.now().strftime("%Y%m%d%H%M%S");#生成當(dāng)前時間 randomNum=random.randint(0,100);#生成的隨機(jī)整數(shù)n,其中0<=n<=100 if randomNum<=10: randomNum=str(0)+str(randomNum); uniqueNum=str(nowTime)+str(randomNum); print uniqueNum;
得到的運(yùn)行結(jié)果如下圖,可以發(fā)生產(chǎn)生出來的數(shù)字沒有一個是相同的:
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com