一 time模块
时间表示形式:
在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:
(1)时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
(2)格式化的时间字符串(Format String):'1988-03-16'
(3)元组(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
# <1> 时间戳 import time print(time.time()) #--------------返回当前时间的时间戳 #1493194473.8422034 # <2> 时间字符串 print(time.strftime("%Y-%m-%d %X")) #2017-04-26 16:14:33 # <3> 时间元组 print(time.localtime()) #东八区时间。 print(time.gmtime()) #标准时间,格林威治时间。 #time.struct_time(tm_year=2017, tm_mon=4, tm_mday=26, tm_hour=16, tm_min=14, tm_sec=33, tm_wday=2, tm_yday=116, tm_isdst=0) #time.struct_time(tm_year=2017, tm_mon=4, tm_mday=26, tm_hour=8, tm_min=14, tm_sec=33, tm_wday=2, tm_yday=116, tm_isdst=0)
小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
几种时间形式的转换:
(1)
#一 时间戳<---->结构化时间: localtime/gmtime mktime print(time.localtime(3600*24)) print(time.gmtime(3600*24)) print(time.mktime(time.localtime())) #time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=2, tm_isdst=0) #time.struct_time(tm_year=1970, tm_mon=1, tm_mday=2, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=2, tm_isdst=0) #1493194973.0 #字符串时间<---->结构化时间: strftime/strptime print(time.strftime("%Y-%m-%d %X",time.localtime())) print(time.strptime("2017-03-16","%Y-%m-%d")) print(time.strftime("%Y-%m-%d",time.localtime(time.time()-24*3600))) #2017-04-26 16:22:53 #time.struct_time(tm_year=2017, tm_mon=3, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=75, tm_isdst=-1) #2017-04-25
(2)
print(time.asctime(time.localtime(312343423))) #Sun Nov 25 10:03:43 1979 print(time.ctime(312343423)) #Sun Nov 25 10:03:43 1979
#--------------------------其他方法 # sleep(secs) # 线程推迟指定的时间运行,单位为秒。
二、random模块
import random print(random.random()) # 大于0且小于1之间的小数 # 0.8871504125977017 print(random.randint(1,5)) # 大于等于1且小于等于5之间的整数 # 2 print(random.randrange(1,3)) # 大于等于1且小于3之间的整数 # 1 print(random.choice([1,'23',[4,5]])) # #1或者23或者[4,5] (choice 选择) # [4, 5] print(random.sample([1,'23',[4,5]],2)) #列表元素任意2个组合 (sample 取样) # [[4, 5], '23'] print(random.uniform(1,3)) #大于1小于3的小数 (uniform 统一的) # 2.407927435974846 item=[1,3,5,7,9] random.shuffle(item) # 打乱次序 (shuffle 洗牌) print(item) random.shuffle(item) print(item)
练习:生产验证码 (validate 验证)
def validate(): s = '' for i in range(5): num=random.randint(0,9) Alf=chr(random.randint(65,90)) #A-Z alf=chr(random.randint(97,122)) #a-z ret=random.choice([str(num),Alf,alf]) s="".join([s,ret]) #和下面的字符相加结果一样 # s+=ret return s print(validate())