Python之路(第十三篇)time模組、random模組、string模組、驗證碼練習

來源:互聯網
上載者:User

標籤:none   格式化   man   its   日期格式   lis   ext   出現   列表   

 

Python之路(第十三篇)【day21】time模組、random模組、string模組、驗證碼練習一、time模組三種時間表示

在Python中,通常有這幾種方式來表示時間:

  • 時間戳記(timestamp) : 通常來說,時間戳記表示的是從1970年1月1日00:00:00開始按秒計算的位移量。(從1970年到現在這一刻一共有多少秒)我們運行“type(time.time())”,返回的是float類型。如 time.time()=1525688497.608947

  • 格式化的時間字串(字串時間) 如“2018-05-06”

  • 元組(struct_time) (結構化時間) : struct_time元組共有9個元素共九個元素:(年,月,日,時,分,秒,一年中第幾周,一年中第幾天,夏令時)

  • ?

1、time.time():

返回目前時間的時間戳記

  import time  ti = time.time()  print(ti)

  

輸出結果

  
  1525688497.608947

  

2、time.localtime( [secs] )

將一個時間戳記轉換為當前時區的struct_time,即時間數組格式的時間 。secs參數未提供,則以目前時間為準。

例子

  
  import time  #沒有參數  print(time.localtime())  #有參數  print(time.localtime(1480000000))

  

輸出結果

  
  time.struct_time(tm_year=2018, tm_mon=5, tm_mday=7, tm_hour=18, tm_min=46, tm_sec=25, tm_wday=0, tm_yday=127, tm_isdst=0)  time.struct_time(tm_year=2016, tm_mon=11, tm_mday=24, tm_hour=23, tm_min=6, tm_sec=40, tm_wday=3, tm_yday=329, tm_isdst=0)

  

 

例子2

  import time  ?  t=time.localtime()  print(t.tm_year)  #取結構化時間中單獨的數值  print(t.tm_mon)  print(t.tm_mday)

  

輸出結果

  
  2018  5  6

  

 

結構化時間各元素表示含義

  
   tm_year    #年 1970-2018  ?   tm_mon     #月 1-12  ?   tm_mday    #日 1-31  ?   tm_hour    #時 0-23  ?   tm_min     #分 0-59  ?   tm_sec     #秒 0-59  ?   tm_wday    #一周中得第幾天 0-6  ,星期一是0,周日是6  ?   tm_yday    #一年中得第幾天 0-365  ?   tm_isdst   #是否是夏令時  0-1  ?

  

 

3、gmtime([secs])

和localtime()方法類似,gmtime()方法是將一個時間戳記轉換為UTC時區(0時區)的struct_time。

即返回當前的格林尼治時間的元組數值

 

4、 mktime(t)

將一個struct_time轉化為時間戳記。

 

例子

  
  import time  print(time.mktime(time.localtime()))

  

輸出結果

  
  1525693661.0

  

 

5、asctime([t])

把一個表示時間的元組或者struct_time表示為這種形式:‘Sun Jun 20 23:21:05 1993‘。

例子

  
  import time  print(time.asctime(time.localtime()))

  

輸出結果

  
  Mon May  7 19:49:21 2018

  

 

6、 ctime([secs])

把一個時間戳記(按秒計算的浮點數)轉化為time.asctime()的形式。如果參數未給或者為

None的時候,將會預設time.time()為參數。

它的作用相當於time.asctime(time.localtime(secs))。

  
  import time  print(time.ctime())

  

輸出結果

  
  Mon May  7 20:17:12 2018

  

 

7、 strftime(format[, t])

把一個代表時間的元組或者struct_time(如由time.localtime()和time.gmtime()返回)轉化為格式化的時間字串。如果t未指定,將傳入time.localtime()。如果元組中任何一個元素越界,ValueError的錯誤將會被拋出。

python中時間日期格式化符號:
    %y 兩位元的年份表示(00-99)  ?  %Y 四位元的年份表示(000-9999)  ?  %m 月份(01-12)  ?  %d 月內中的一天(0-31)  ?  %H 24小時制小時數(0-23) #注意是大寫  ?  %I 12小時制小時數(01-12)  ?  %M 分鐘數(00=59) #注意是大寫  ?  %S 秒(00-59) #注意是大寫  ?  %a 本地簡化星期名稱  ?  %A 本地完整星期名稱  ?  %b 本地簡化的月份名稱  ?  %B 本地完整的月份名稱  ?  %c 本地相應的日期表示和時間表示  ?  %j 年內的一天(001-366)  ?  %p 本地A.M.或P.M.的等價符  ?  %U 一年中的星期數(00-53)星期天為星期的開始  ?  %w 星期(0-6),星期天為星期的開始  ?  %W 一年中的星期數(00-53)星期一為星期的開始  ?  %x 本地相應的日期表示  ?  %X 本地相應的時間表示  ?  %Z 當前時區的名稱  ?  %% %號本身

  


?

 

例子

  
  import time  ?  print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))

  

輸出結果

  
  2018-05-07 20:33:32

  

 

8、strptime(string[, format])

把一個格式化時間(字串時間)字串轉化為struct_time。實際上它和strftime()是逆操作。

 

  
  import time  ?  print(time.strptime("2018/05/07 20:33:32","%Y/%m/%d %H:%M:%S")) #第一個參數這裡的字串分隔的字元#可以自己定義,第二個參數與第一個參數對應即可

  

輸出結果

  
  time.struct_time(tm_year=2018, tm_mon=5, tm_mday=7, tm_hour=20, tm_min=33, tm_sec=32, tm_wday=0, tm_yday=127, tm_isdst=-1)

  

 

這裡也可以單獨取值

  
  import time  ?  t=time.strptime("2018/05/07 20:33:32","%Y/%m/%d %H:%M:%S")  print(t.tm_mday)  print(t.tm_year)

  

輸出結果

    7  2018 

  

9、sleep(secs)

線程延遲指定的時間運行,單位為秒。

  
  import time  ?  s1 = "你好"  s2 = "nicholas"  print(s1)  time.sleep(2)  print(s2)

  

輸出結果

    你好  #程式延遲2秒後輸出“nicholas”  nicholas 

  

10、clock() (瞭解)

Python time clock() 函數以浮點數計算的秒數返回當前的CPU時間。用來衡量不同程式的耗時,比time.time()更有用。

這個需要注意,在不同的系統上含義不同。在UNIX系統上,它返回的是"進程時間",它是用秒錶示的浮點數(時間戳記)。而在WINDOWS中,第一次調用,返回的是進程啟動並執行實際時間。而第二次之後的調用是自第一次調用以後到現在的已耗用時間。(實際上是以WIN32上QueryPerformanceCounter()為基礎,它比毫秒錶示更為精確)

 

time不同形式相互轉換

 

二、random模組

產生隨機數值的模組

 

1、random.random()

隨機產生大於0且小於1之間的小數

  
  import random  v1 = random.random()  print(v1) 

  

2、random.uniform(a, b)

返回一個介於a和b之間的浮點數。一般是a<b,即返回a和b之間的浮點數,如果 a大於b,則是b到a之間的浮點數。這裡的a和b都有可能出現在結果中。

  
  import random  v1 = random.uniform(1.1,2.5) #這裡的a,b不一定的整數,一般會寫成整數  print(v1) 

  

3、random.randint(a,b)

返回range[a,b]之間的一個整數,即整數

  
  import random  v1 = random.randint(1,3) #這裡a,b必須是整數,a,b都可以出現在結果中  print(v1) 

  

4、random.randrange(start, stop[, step])

random.randrange(start, stop[, step]) # 返回range[start,stop)之間的一個整數,start\stop必須是整數,可加step,跟range(0,10,2)類似。

  import random  v1 = random.randrange(1,5,2)   print(v1) 

  

5、random.choice(seq)

從非空序列seq(字串也是序列)中隨機選取一個元素。如果seq為空白則彈出 IndexError異常。

  
  import random  v1 = random.choice([1,5,2,"ni",{"k1":"v1"},["hi",8]])  print(v1)

  

輸出結果

從列表[1,5,2,"ni",{"k1":"v1"},["hi",8]]隨機返回一個元素

    import random  ?  print(random.choice("nicholas"))

  

輸出結果

隨機返回字串“nicholas”的一個字元

 

6、random.sample( population, k)

從population樣本或集合中隨機選取k個不重複的元素組成新的序列

  
  import random  v1 = random.sample([1,5,2,"ni",{"k1":"v1"},["hi",8]],3)  print(v1)

  

輸出結果

從列表中隨機抽出3個不重複的元素組成新的列表

 

7、random.shuffle()

將列表的順序打亂

  
  import random  li = [1,5,2,3]  random.shuffle(li)  print(li)

  

輸出結果:輸出這4個元素隨機順序的列表

 

三、string模組(瞭解)

字串方法見之前的博文。

下面是一些字串常量

1、string.ascii_lowercase

返回字串小寫字母’abcdefghijklmnopqrstuvwxyz’

import stringprint(string.ascii_lowercase)

  



 

2、string.ascii_uppercase

返回字串大寫的字母’ABCDEFGHIJKLMNOPQRSTUVWXYZ’

import stringprint(string.ascii_uppercase)

  



 

3、string.ascii_letters

返回小寫a~z加上大寫的A~Z組成的字串,即string.ascii_lowercase串連string.ascii_uppercase組成的字串

import stringprint(string.ascii_letters)

  



 

4、string.digits

數字0到9的字串:’0123456789’

import stringprint(string.digits)

  



5、string.hexdigits

返回字串’0123456789abcdefABCDEF’,即十六進位的所有字元(英文字母加上大小寫)組成的字串

import stringprint(string.hexdigits)

  



 

6、string.letters

string.letters在python2中返回的結果與string.ascii_letters一樣,python3中取消了,

string.ascii_letters在python2、python3中都可以用

 

7、string.lowercase

string.lowercase在python2中返回字串小寫字母’abcdefghijklmnopqrstuvwxyz’,與string.ascii_lowercase一致,python3中取消了

string.ascii_lowercase在python2、python3中都可以用

 

8、string.uppercase

string.lowercase在python2中返回字串大寫的字母’ABCDEFGHIJKLMNOPQRSTUVWXYZ’,與string.ascii_uppercase一致,python3中取消了

string.ascii_uppercase在python2、python3中都可以用

 

9、string.octdigits

返回八進位的所有字元組成的字串

import stringprint(string.octdigits)

  



 

10、string.punctuation

返回所有標點字元

import stringprint(string.punctuation)

  



輸出結果

!"#$%&‘()*+,-./:;<=>[email protected][\]^_`{|}~

  



 

 

11、string.printable

返回所有的可列印的字元的字串。包含數字、字母、標點符號和空格

import stringprint(string.printable)

  



輸出結果

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&‘()*+,-./:;<=>[email protected][\]^_`{|}~ 

  



分析:即string.digits加上string.ascii_letters加上string.punctuation組成的字串

 

四、驗證碼練習

產生四位元字驗證碼

1、方法一

  
  import random  li=[str(i) for i in random.sample(range(0,10),4)]  print("".join(li))

  

2、方法二

  
  import random  li = []  for i in range(4):      li.append(str(random.randint(0,9)))  print("".join(li))

  

 

產生數字加字母的四位驗證碼

1、方法一

  import random  num_l = list(map(str,list(range(10)))) #擷取以0-9字串為元素的列表  del_l = list(range(91,97))  chr_l = [chr(i) if i not in del_l else ‘‘for i in range(65,123)] #擷取大小寫a-z的列表,去掉中間的6個特殊字元  num_l.extend(chr_l)  #將字母和數字組合在一起  res_l = num_l  res_str = "".join(res_l).strip("") #去掉Null 字元元素  print("".join(random.sample(res_str,4)))

  

2、方法二

import stringimport randomres_str = ("%s%s")%(string.ascii_letters,string.digits)print("".join(random.sample(res_str,4)))

  

Python之路(第十三篇)time模組、random模組、string模組、驗證碼練習

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.