第十六天
# # 1.数学模块
# port math # 里面所有的工具都是针对普通数学
# port cmath #里面所有工具针对复数
# python中和数学相关的类型有4种:int、float、bool、complex
# ai+b、 - 复数 i叫虚数单位,i**2 ==-1
#python种的复数,j是复数
import math
# math 模块
# 1) 小数转整数
#a.math.ceil(数字) 向大取整
# b.math.floor(数字) 向小取整
# round(数字) 四舍五入
print(math.ceil(1.9)) #2
print(math.ceil(1.1)) #2
print(math.floor(1.9)) #1
print(round(1.55)) #5
print(math.degrees(3.1415926535))
# 2)求绝对值
# math.fabs(数字)
# abs(数字)
# print(abs(-62)) 绝对值
print(math.fabs(-30))
import random
# 1)产生随机 整数:random.randint(a,b) -产生a到b 的随机整数,[a,b]
print(random.randint(1,2))
# 2)产生随机小数: random.random() - 产生0~1的随机小数
print(random.random())
#产生0~100的随机小数
print(random.random()*100)
print(random.random()*50+50)
#产生 m~n 的随机小数:random.random()*(n-m)+m
# 3)在指定的等差数列中随机获取一个数:random.randrange(起点,终点,步长)
#产生0~100的随机偶数
print(random.randrange(0,100,2))
# 4) 洗牌 (随机打乱列表中元素的顺序)
nums =[10,20,30,40,50,60]
random.shuffle(nums)
print(nums)
# 5)抽牌
# random.choice(序列)
# random.choices(序列,k=数量) - 随机获取多个元素(有放回)
# random.sample(序列,k=数量) - 随机取多个元素(无放回)
nums =[10,20,30,40,50,60]
result = random.choices(nums,k=4)
print(result)
result = random.sample(nums,k=3)
print(result)
# 哈希加密(摘要)的特点
'''
1)密文不可逆
2)相同的数据通过相同的算法得到密文相同
3)不同长度的数据通过相同的算法得到的密文长度相同
'''
# 'abc' ->'idsfiusniu' ->'abc'
# 2.python生成哈希摘要的方法
import hashlib
#1)根据算法创建hash对象
#常用hash算法:md5和shaxxx
hash = hashlib.md5()
# 2)添加生成摘要数据
#hash对象.update(二进制数据)
'''
python 中字符串和二进制的相互转换 : 二进制 - bytes
a.字符串转二进制
方法一:bytes(字符串,'utf-8')
方法二:字符串.encode()
b.二进制转字符串
方法一:str(二进制,utf-8)
方法二:二进制.decode()
'''
# result1 = '123456'.encode()
# print(type(result1,'utf-8'))
# hash.update(bytes('123456',encoding='utf-8'))
hash.update('999'.encode())
# 3)获取摘要值(获取密文)
result = hash.hexdigest()
print(result)
# time模块
import time
#补充:时间戳
# 1.time.time() - 获取当前时间(当时时间的时间戳)
t1 = time.time()
print(t1,type(t1))
'''
时间戳指的是某一个时间到1970年1月1日0时0分0秒(格林威治时间 )的时间差,单位是秒
'''
# 2.time.localtime()
#1)time.;local() -(返回的时候本地时间对ing的机构体时间)
#2) time.local(时间戳)
t2 = time.localtime()
# 通过结构体时间
print(t2)
#通关过结构体时间单独获取指定信息
#
# print(t2.dyear,t2.tm_mon)
# 3.time.sleep(时间) - 让程序暂停/等待暂停指定时间(单位unuai出库啊
# time.sleep(2)
#
#
#
# 4.time.strftime(时间格式,结构体时间 - 将结构)
# time.strftime()
# 5.time.strptime()
result = time.strptime('2017-3-24 PM 2:30','%Y-%m-%d %p %I:%M')
print(result)
print(result.tm_wday)
# time.mktime(结构体时间) - 将结构时间转换成时间戳
print(t2)
result = time.mktime(t2)
print(result)
#datetime 模块
# timedelta 时间的加减法
from datetime import datetime
#1.datetime类型
#1)获取当前时间
t1 = datetime.today()
print(t1,type(t1))
t2 =datetime.today()
print(t2,type(t2))
# 2)直接提供时间信息
#datetime(年,月,日,时=0,分=0,秒=0)
t3 =datetime(2018,10,1)
print(t3,type(t3))
# 3)通过字符串时间创建时间对象
t4 = datetime.strptime('2019-2-23 23:30:51','%Y-%m-%d %H:%M:%S')
print(t4,type(t4))
# 2 . 获取事件对象具体的时间信息
print(t4.year)
print(t4.month)
print(t4.day)
print(t4.hour)
print(t4.minute)
print(t4.second)
print(t4.weekday)
from datetime import timedelta
# 3 .时间的加减操作
#事件对象 -/+ timedelta(days=?,hours=?,minutes=?,seconds=?weeks=?)
#练习: 2019-3-31 23:59:59 2秒后是什么时候
result = t4 + timedelta(seconds=2)
print(result)