一、复习
1.函数(重点)
1)封装打包,需要对应代码功能可直接调用
2)单纯的分块分类函数用处
def 函数名(形参列表):
函数说明文档
函数体
调用函数:
函数名(实参列表)
定义函数不会执行函数体,调用的时候才会执行
实参列表 — 位置参数、关键字参数
参数
返回值—获取函数调用表达式的值
函数名=lambda 形参列表:返回值
系统实参高阶函数的用法:max,min,sorted,列表.sort;map
2.模块
命名一定要符合变量名的要求
import test
test.x
from test import x
x
3.异常
try:
代码段1
except异常类型:
代码段2
二、os模块介绍
1.os模块 — 用来提供文件和文件夹相关操作的模块
1)os.getcwd() — 获取当前目录
open(os.getcwd()+’/test.py’)
2)os. listdir(文件夹路径) — 获取指定文件夹下所有的文件和文件夹的名字
3)创建文件夹 — mkdir、makedirs
os.mkdir(’./dirs’)
4)返回文件名 os.pathbasename(文件路径) — 返回文件名
result=os.path.basename(’./files/filel.txt’)
print(result)
5)os.path.exist(文件/文件夹路径) — 判断指定文件或者文件夹是否存在
存在是‘True’,不存在为’False’
6)os.path.splitext(文件路径) — 文件名和后缀分离
print(os.path.splitext(‘files/file1.txt’))
三、数学模块和随机模块
1.数学模块
import math,cmath
*math是普通的数学模块 #这俩面所有的工具都是针对普通数字的
*cmath是针对复数的 #这里面所有的工具都是针对复数的
*bool 是特殊的整型
*python中和数字相关的类型有四种:整数int,float,bool,complex
*ai+b — 复数 , i叫虚数单位 , i**2==-1
**注意:python中的复数,j是虚数单位
x=2j+3
y=3j-4
print(x+y) #实部和实部相加,虚部和虚部相加 ( 5j-1)
print(x*y) #(-18+1j)
math模块
1)小数转整数
math.ceil(数字) —向大取整
math.floor(数字) —向小取整
round(数字) — 四舍五入
print(math.ceil(1.9)) #2
print(math.ceil(1.1))
print(math.floor(1.1)) #1
print(round(1.1)) #1
print(round(1.9)) #2
2)求绝对值
math.abs(数字)
math.fabs(数字)
print(abs(-30)) #30
print(math.fabs(-30)) #30.0
print(abs(-30.56)) #30.56
print(math.abs(-30.56))
2.随机模块
import random
1)产生随机整数:random.randint(a,b) —产生a到b的随机整数,[a,b]
print(random.randint(1,2))
2)产生随机小数:random.random() — 产生0-1的随机小数
print(random.random())
#产生1~100的随机小数
print(random.random()*100)
#产生50~100的随机小数
print(random.random()*50+50)
#产生M~N的随机小数:random.random()*(N-M)+M
3)在指定的等差数列中随机获取一个数:random.randrange(起点,终点,步长)
#产生0~100的随机偶数
print(random.randrange(0,101,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.choice(nums,k=3)
print(result) #[50,20,50]
result=random.sample(nums,k=3)
print(result)
四、哈希摘要
1.哈希加密(摘要)的特点
加密算法中的一类,但不是所有都可用
1)密文不可逆
‘abc’—>‘HAAHSDHOJ’—>‘abc’
eg:忘记密码无法得知你密码是多少只能重新设置
2)相同的数据,通过相同的算法得到的密文相同,不相同的数据通过相同的算法得到的密文不相同
3)不同长度的数据通过相同的算法得到的密文长度相同
‘abc’
2.python生成哈希摘要的方法
import hashlib
#1)根据算法创建hash对象
常用hash算法:md5和shaxxx
hash=hashlib.md5()
#2)添加生成摘要的数据
hash对象.update(二进制数据)
‘’’
python中字符串和二进制的相互转换: 二进制 --bytes
a.字符串转二进制
方法一:bytes(字符串,‘utf-8’)
方法二:字符串.encode()
#hash.update(bytes(‘123456’,‘utf-8’)
hash.update(bytes(‘123456’,'encode())
b.二进制转字符串
方法一:str(二进制,)
方法二:二进制.decode()
‘’’
result1=‘123456’.encode()
print(type(result1))
result2=str(result1,‘utf-8’)
print(result2,type(result2))
result=result1.decode()
print(result3,type(result3))
3)获取摘要值(获取密文)
result=hash.hexdigest()
print( result)
五、time模块
1.time.time() — 获取当前时间,运行程序到此刻的时间(当前时间的时间戳)
补充:时间戳
时间戳指的是某一个时间到1970年1月1日0时0分0秒(格林威治时间)的时间差,单位是秒。
优点:节约内存,时间戳加密更加方便
2.time.localtime()
1)time.localtime() — 获取当前时间(返回的时候本地时间对应的结构体时间)
2)time.localtime(时间戳) — 将时间戳转换成结构体时间
t2=time.localtime()
print(t2)
#通过结构体时间单独获取指定数据指定信息
#tm_wday — 星期值,从0~6表示周一到周天
print(t2.tm_year,t2.tm_mon)
3.time.sleep(时间) — 让程序暂停/等待指定时间(单位秒)
time.sleep(2)
print(’=====================’)
结构体时间和字符串时间的相互转换
4.time.strftime( 时间格式,结构体时间) — 将结构体时间转换成指定格式的字符串时间。
5.time.strptime( ) —先给时间字符串,时间格式() ——将字符串时间转换成结构体时间
#2017-3-24是周几?
#‘2017-3-24’
result=time.strptime(‘2017-3-24 PM 2点’,’%Y-%m-%d %p %I点’)
print(result)
print(result.tm_wday)
6.time.mktime(结构体时间) — 将结构体时间转换成时间戳
六、datetime模块
from datetime import datetime,date,time ,timedelta datetime年月日时分秒
timedelta是用来计算时间的
1.创建detatime类型的数据
1)获取当前时间
t1=datetime.now()
print(t1)
t2=datetime.today()
print(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:%S’)
print(t4,type(t4))
2.获取时间对象具体时间信息
print(t4.year)
print(t4.month)
print(t4.day)
print(t4.hour)
print(t4.minute)
print(t4.srcond)
3.时间的加减操作
时间对象 -/+ timedelta(days=?,hours=?,minutes=?,second=?,week=?)
练习:2019-3-31 23:59:59 2秒后是什么时候
result=t4+timedelta(second=2)
print(result)