# 时间模块
# 三种时间表现形式
# 时间戳
# 格式化的时间字符串
# 元组(struct_time)结构化时间 struct_time元组共有9个元素(年,月,日,时,分,秒,一年中的第几周,一年中的第几天等)
# 索引 # 属性 # 值
# 0 tm_year 2011
# 1 tm_mon 1-12
# 2 tm_mday 1-31
# 3 tm_hour 0-23
# 4 tm_min 0-59
# 5 tm_sec 0-60
# 6 tm_wday 0-6(0表示周一)
# 7 tm_yday 1-366(一年中的第几天)
# 8 tm_isdst 默认为0(是否是夏令时)
import time
time.sleep(1) # 延时1s
time.time() # 获取时间戳,以s为单位的浮点数,返回的float类型
# 格式化的时间字符串
print(time.strftime('%Y-%m-%d %H:%M:%S')) # 2018-09-23 13:24:39
# 时间元组结构化时间:locatime()将以个时间戳转换为当前时区的struct_time
print(time.localtime()) # time.struct_time(tm_year=2018, tm_mon=9, tm_mday=23, tm_hour=13, tm_min=32, tm_sec=58, tm_wday=6, tm_yday=266, tm_isdst=0)
# time.struct_time(tm_year=2018, tm_mon=7, tm_mday=24, tm_hour = 13, tm_min=59, tm_sec=37, tm_wday=0)
print(time.localtime().tm_year) # 2018
# 时间戳和结构化时间的转换
t = time.time() # 得到时间戳
print(time.localtime(t)) # time.struct_time(tm_year=2018, tm_mon=9, tm_mday=23, tm_hour=13, tm_min=36, tm_sec=38, tm_wday=6, tm_yday=266, tm_isdst=0)
# gmtime 是从秒得到格林时间的结构化时间
print(time.gmtime(t)) # time.struct_time(tm_year=2018, tm_mon=9, tm_mday=23, tm_hour=5, tm_min=36, tm_sec=38, tm_wday=6, tm_yday=266, tm_isdst=0)
# 将结构化时间转换成时间戳时间
print(time.mktime(time.gmtime())) # 1537652433.0
# 格式化时间转换为结构化时间
print(time.strptime('2000-12-31', '%Y-%m-%d')) # time.struct_time(tm_year=2000, tm_mon=12, tm_mday=31, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=366, tm_isdst=-1)
# 时间戳转换为格式化时间
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(3000000000))) # 2065-01-24 13:20:00
# random模块 随机数模块
import random
# 随机小数
print(random.random()) # 0.22507560552012607 返回大于0且小于1之间的小数
print(random.uniform(1, 3)) # 返回大于1小于3的小数
# 随机整数
print(random.randint(1, 5)) # 大于等于1且小于等于5之间的整数
print(random.randrange(1, 10, 2)) # 大于等于1且小于10之间的奇数
# 随机选择一个返回
print(random.choice([1, '23'])) # 返回1或者23或者
# 随机选择多个返回,返回的个数为函数的第二参数
print(random.sample([1, '23', [4, 5]], 2)) # 列表元素任意2个组合 # [1, '23']
# 打乱列表顺序
item = [1, 3, 5, 7, 9]
random.shuffle(item) # 打乱列表的顺序
print(item) # [3, 9, 5, 1, 7]
# 练习:生成随机验证码