导图社区 Python编程基础
Python编程基础知识,包括包的调用、函数的定义、用Python操作Excel文件等。包含环境配置、python基础编程概念、python高级数据类型、python高级编程概念等内容。
编辑于2021-10-03 23:47:19Python编程基础
环境配置
Python基础编程概念
1.1python的对象与类型-五种基本对象类型
对象与类型
python中所有的东西都是对象
对象使面向对象编程中的一种概念,是包括属性和行为的一种实体
每个对象都具有特定类型,不同类型的对象的属性或行为会有所有不同
五种基本对象类型
字符串:string,简记为str
'helllo woeld!'或"hello woeld!"
整数:integ,简记为int
十进制:64,-64
八进制:0o开头表示八进制,0o100,-0o00
十六进制:0x开头表示十六进制,0x40,-0x40
二进制:0b开头表示二进制,0b100000,-0b10000
浮点数:float
表示形式:1.48,21.(=21.0),.21(=0.21),2.1E2(科学计数法E2为10的2次方)
布尔型:boolean,
简记为bool
True
False
复数:complex
1+2j,-1-1j
1.2type函数-查看对象类型及为什么要区分对象类型
type函数:查看对象类型
使用方法:type(对象)
为什么要区分对象类型
不同类型对象的运算规则不同;
1+1=2 '1'+'1'='11'
不同类型对象在计算机内表示方式不同
整数5的机内表示:0b00000101(8位二进制表示的情况)
字符串'5'的机内表示:0b00110101(8位二进制表示的情况)
浮点数5.的机内表示:0b01000000101000000000000000000000(32位二进制表示的情况)
为什么要区分整数和浮点数
浮点数可以表示小数和整数,表示的数值范围大,不过浮点数计算效率低,需要CPU中提供的专门浮点运算部件提高效率,且浮点数会造成精度损失
1.3python基础运算符概括
算术运算符
+(加),-(减) ,*(乘), /(除), //(整除), %(取余数) ,**(幂运算,前一个数是底数,后面的是指数)
关系运算符
==()相等,!=(不等于),>,>=,<,<=
逻辑运算符
and,or,not
1.4算术运算符、关系运算符和逻辑运算符及运算符优先级
算术运算符
关系运算符
逻辑运算符
运算符优先级
从下到上,从低到高
与数学相同,可以加括号强制先算
1.5变零及标识符的命名规则
变量
变零适用于引用对象的标识符
语法:变量名=对象(可以用变量名访问对象)
标识符命名规则
标识符 指可以由用户自行设置的名字,例如:变量、函数、类以及模块等名字
命名规则:
1、长度不限
2、只能包含字母、数字和下划线
3、首字符不能是数字
4、大小学敏感
5、python中特殊含义的关键字不能用
1.6数据的输入与输出
数据输入:input(prompt=None,/)
函数名:input
参数:prompt (提示信息,默认为None,即无)
返回值:字符串对象
由于input总是返回的字符串对象,因此你需要将其转换为你所需要类型的对象,示例:
radius = float(input('请输入圆的半径:'))
输出:print(value,...,sep='',end='\n')
函数名:print
参数:value,... (要输出的对象序列)
参数:sep (输出对象时的分隔符,默认为空格)
参数:end (输出完毕后的结束符,默认为换行)
返回值:字符串对象
示例
1.7内置数值函数、内置数学模型和range函数
常用内置函数
内置数学模块
math
要使用math模块内的方法或属性,需要用impo math命令导入该模块
math模块包含的内容
几个常数:自然常数e、圆周率pi;
三角函数:cos、sin、tan
反三角函数:acos,asin,atan,atan2
对数函数:log,log10,log2
取整函数:ceil,floor
角度和弧度转换函数:degrees,radians
使用math模块内容
获取圆周率pi:math.pi
计算30角度的余弦值:math.cos(math.randians(30))
range函数
range函数可接受3个参数:(下限值,上限值,步长),函数会返回一个从下限值开始,到上限值-1结束的range对象,该对象中迭代值之间的差值等于步长。如果省略步长,则默认取1
1.8基础程序控制结构及程序
程序控制结构
三种基础程序控制结构(所有程序设计语言包含一下3中程序控制结构)
顺序机构:编写是什么顺序,执行是就是什么顺序
选择结构:根据条件情况,选择不同的执行路径
循环结构:根据条件情况,重复执行一段相同代码
选择结构
if语句
if...else语句
if...elif...else语句
程序流程图符号说明
1.9if语句和if...else语句
if语句
if条件: 缩颈语句块 其他局域
冒号表示子语句
按tab键 等于 按空格四次 便于缩进
子语句缩进相同
流程图
代码示例
if...else语句
if 条件: 缩进语句块1 else: 缩进语句块2 其他语句
流程图
代码示例
1.10if-else三元表达式、if语句嵌套及多分支选择结构
使用if...else语句编写分支结构,由于其涉及的元素相当简单,感觉写多行代码太占空间时,可以使用if...else三元表达式替换
if语句嵌套
如果分数大于等于60分,且是女生,则程序输出“该女生及格”,否则输出“不及格”或“不是女生”
多分支选择结构
将分数转换为等级输出:
0-59:E; 60-69:D; 70-79:C; 80-89:B; 90-100:A;
1.11循环结构-while语句、break语句、comtinue语句
while语句
while 条件: 缩进语句块(循环体)
判断条件真假,如果为:
True,则执行循环体; False,则退出whil循环
示例:计算1-100之间的整数之和
for语句
break语句
break语句一般用于循环体内配合选择结构使用,用于在循环执行过程中,某种情况发生时,终止整个循环的执行
配合if语句使用
continue语句
continue语句也是用于循环体内,配合选择结构,在某种情况发生时,中止本次循环的执行,而继续下一次循环的执行
1.12循环结构-for语句及演示
for 变量 in 可迭代对象: 缩进语句块(循环体)
依次遍历可迭代对象中的每一个元素,如果该元素不为空,那么将该元素赋值给变量,然后执行循环体
可迭代对象可以是
列表:[1,2,3,4,5]
元组:(1,2,3,4,5)
字符串:'abcde'
range对象:range(1,10)
示例
python高级数据类型
2.1内容概述以及列表的结构介绍
列表
列表(list)
两端用方括号界定,表示开始和结束
列表内用逗号间隔
列表结构
元素个数,判断列表的长度
列表是一个有序的序列,对每一个列表元素进行编号,也叫作索引,在python中有正负两种索引,正是从左往右,从0开始,负的话是从又往左,从-1开始
元组
字符串
字典
2.2列表特性的介绍
列表是一种“可变序列”对象
可变:是指可以在原来的位置改变它的指
列表实际存在的是对象的引用,而不是对象本身
列表可以引用任意对象
列表元素是有序的,通过位置偏移访问
2.3创建列表对象的方法
变量 = [对象1,对象2,对象3,...,对象n]
对象可以包含多个,可以是任意类型的对象
变量 = list(可迭代对象)
list:是python中表示列表的名称 括号内“可迭代对象”是指可以按照顺序循环的方式一个一个取出对象元素的
列表中可以放置任何类型的对象 list1 = list("abcdef") ==> ['a','b','c','d','e','f'] list()可以把字符串中的每一个字符单独拿出来构成一个列表 list1 = list(range(5)) ==>[1,2,3,4,] range()可以计算一个范围的序列;list()可以把里面的值取出来构成一个列表对象
2.4列表的基础操作
获取列表长度
len(列表对象)
列表连接
列表对象1 + 列表对象2
列表重复
列表对象 * 整数值
2.5列表的索引、分片及嵌套
索引
取单个元素
索引:列表名[索引值](索引值起始值为0)
分片
取出一个子集(或者取一个区间)
分片:列表名[起始索引:终止索引:步长]
步长的默认值是1 起始索引从0开始 终止索引不包含其指向的列表元素,而取出的是前一个数 省略终止索引会一直取到结尾
第三个起始索引是负值,则表示从右往左取值,同时此时的步长不能省略,也为负值,终止索引为空的会取到头
嵌套
嵌套列表可以用来表示多维数组,在数学中成为矩阵
表现就是二维的是列表套列表,三维则是列表中套列表再在其中套列表
2.6如何修改列表某个元素值和区间内容
修改列表汇总的某个元素值
列表名[索引值] = 新对象
修改列表中一段区间的内容
列表名[切片] = 可迭代对象
删除列表的一个元素
del 列表名[索引值]
列表名.remove(对象)
remove 是列表名的方法 括号内是要删除的对象 通过用值来找到要删除的值
列表名.pop(索引值)
pop 也是通过索引值去删,把值弹出来(pop是弹出)弹出后先输出指定索引的值,然后再把这个值删除
2.7指定索引位置插入对象与列表尾部添加单个或多个对象
在指定索引位置插入一个对象
列表名.insert(索引值,新对象)
在列表尾部添加一个对象
列表名.append(对象)
在列表尾部扩展添加多个对象
列表名.exten(可迭代对象)
不是把列表单独加入另一个列表中,而是把一个列表中的内容,加到另一个列表的尾部
2.8清空管理及查找对象在列表中的索引值
清空列表
列表名.clear()
改变列表元素顺序
列表名.reverse()
反向输出
列表名.sort()
排序,仅对数字和英文字符的排序
列表名.sort(reverse=True)
反向排序
查找对象在列表中的索引值
列表名.index(对象)
查某一个对象是否在列表里,在的话它的位置在哪里 使用是出错会导致程序的退出,在实际应用中要考虑容错的处理
2.9元组特性和元组操作
元组 (tuple)
元组的特性
元组与列表非常相似,只是元组是“不可变序列”对象,即元组的基本操作与列表相同,只是不能在对象原来位置进行修改、添加和删除操作
元组操作
创建元组对象、元组连接、元组复制、索引操作、分片操作
元组使用圆括号“()”包含元素
创建包含一个元素的元组对象时,需要在元组唯一元素对象后额外添加一个逗号”,“
列如: t1 = (1,) #变量t1引用包含一个元素的元组对象
由于元组是不可变对象,因此不能进行类似列表的insert、append、remove、pop、clear这些在对象原位置修改的操作
2.10字符串的介绍及其特征
字符串(str)
它本身是一个字符的序列,也可以当成是一个列表操作,它本身可迭代 字符串中的空格也属于是字符串中的元素
字符串的特性
字符串和元组一样也是“不可变序列”对象
字符串由一对单引号' 或双引号" 包含的一串字符组成
由于字符串是一个序列对象,因此也可以进行索引、分片、连接、重复等基本的序列操作
2.11字符串-转义序列
转义序列:有一个反斜线“\“始的字符序列。用来在字符串中表示特殊符号或者将具有特殊含义符号转换为其字面意义使用
特殊符号的转义序列:
\n :换行符,输出是类似按了键盘enter键的效果
\t :水平制表符,输出时类似按了键盘tab键的效果
\b :退格符,输出时类似按了键盘backspace键的效果
\u2506 : “★”一个实心的五角星符号,无法直接键盘输入
u 代表2506是一个什么编码
\xe6 :"æ",一个希腊字母,其也无法直接键盘输入
特殊含义符号转义为其字面意义
\\ :反斜线的字面义,即反斜线符号本身,不再具有转义的特殊含义
\' :单引号的字面义,不再具有界定字符串的功能含义
\" :双引号的字面义,不再具有界定字符串的功能含义
2.12字符串转换与字符串方法
字符串的转换
将数字字符串(仅包含数字、小数点和正负号)转换为数值
转换为整数:int(包含数字和正负号的数字字符串)
转换为小数:float(包含数字、小数点、正负号的字符串)
将单个字符在其底层编码和字面形式之间转换
转换为底层编码:ord(单个字符字符串)
把单个字符的的数值转换为在计算机内的编码
hex是以16进制输出
转换为字面形式:chr(字符底层编码)
字符串的方法
查找子串:find(从左往右找)、rfind(从右往左找)、index(找子串)、rindex
字符串的分割:split(从左往右分割)、rsplit(从右往左分割)、splitline(按行进行分割)
字符串连接:join
字符大小写变换:lower(大小转换小写)、upper(小写转换大写)、swapcase(清除大写形式)
去除空白符:strip、lstrip、rstrip
2.13字符串的格式化
Python中提供两种方式进行字符串格式化输出:
字符串格式化表达式:
'...%s...'%(values)
%s 是指格式化要输出的类型
字符串格式化方法调用
'...{}...'.format(values)
示例
字符串格式化表达式
语法格式
字符串%(对象列表)
字符串
由字符串字面量和“%转换格式”混合组成
%转换格式
字符串格式化、format方法调用
语法格式:字符串.format(对象列表)
字符串:由字符串字面量和{[转换格式]}混合组成
示例
2.14字典的简介及特性和创建字典对象
字典(dict)
字典
字典是python内建的维护键值对(key:value)映射关系的无序集合类型
字典元素包括在一对大括号内
字典特性
字典中维护的是key:value(即键:值)映射关系
字典是“可变映射”对象
字典元素是无序的,通过键访问
键可以是任意不可变对象,值可以是任意对象
创建字典对象
D = {}
D = {'name':'Tom','age':40}
D = dict(name='Tom',age=40)
D = dict([['name':'Tom'],['age':40]])
注意:二维列表的内层列表只能包含两个元素,前一个元素是键,后一个元素是值
D = dict(zip(['name','age'],['Tom',40]))
zip类似于拉链,将两个列表间的键和值进行一 一对应
D = dict.fromkeys(['a','b','c'],0)
生成的结果就是 a:0,b:0,c:0
2.15获取某所有键、值及所有键值对
获取字典某个键值对的值
字典名[键] # 不好
字典名.get(键) # 好
获取所有值
字典名.values()
获取所有键
字典名.keys()
获取所有键值对
字典名.items()
2.16修改或添加键值对和判断是否存在某键
修改或添加键值对
字典名[键] = 对象
如果键已存在于字典中,那么就修改该键的值
如果键不存在与字典中,那么就将键-值对添加到字典
删除指定键
del 字典名[键]
字典名.pop(键)
清空字典
字典名.clear()
判断字典中是否存在某键
键in字典对象
python高级编程概念
3.1函数简介
函数
概念
为了方便一段代码的重复使用,将这段代码进行包装模块化,并给这个模块起名,以后用名字就可以对这个代码进行操作的就是函数
声明函数:def与lambda
函数的调用
作用域
函数参数
函数结果返回:teturn与yield
包与模块
文件与目录
3.2def语句声明函数
def语句
函数头
def:(关键字)用于表示定义一个函数对象,将该对象赋值给name
name:所谓的函数名,用来引用函数对象
(arg1,arg2,...,argN):形式参数列表,用来接受函数外部数据;
函数体
缩进语句块:函数对象被调用时要执行的语句块
return value:用于函数执行完毕后,给调用者返回运行结果。可以省略,省略时默认返回None。
定义函数
# 函数的声明 def times(x,y): # 函数头 return x * y # 函数体
例:
以上代码段定义了一个函数,其名字为times 其有两个形式参数,即需要从调用者哪里接收两个数据 函数体:就只有一条语句:return x * y ,即将函数运行结果返回给调用者
3.3调用函数的方式
调用函数
times(5,6):
调用times函数,将5赋值给参数x,将6赋值给参数y;
ret = times(5,6):
times函数运行完毕后,将5*6的结果30返回,并通过赋值给ret变量
print(ret):
将变量ret引用的整数常量30打印出来
3.4作用域及其示例演示
作用域
作用域用来描述一个变量在程序文件中的有效范围
在一个程序文件中,定义了函数之后,这时程序文件区域被划分为两个部分:函数内部和函数外部
在函数内部定义的变量,只在该函数局部范围内有效,即所谓局部变量;
而在所有函数外部定义的变量,其在整个程序文件范围都有效,即所谓的全局变量。
作用域示例:
x:全局变量,在整个文件范围均能访问;
y,x:局部变量,只能在函数fun内部访问;
print(fun(1)):调用函数fun,并将1赋值给y,最终输出函数返回结果给z;
print(z):尝试在函数外部访问局部变量z,程序报错。
实际运行
x = 99 # 函数的声明 def fun(y): # 函数头 z = x + y # 函数体 return z print(fun(1)) print(z)
叫z的名字在函数里没有找到
3.5global语句
在函数内部,可以直接读取全局变量的值;
但如果要在函数内部为全局变量赋值,则需要在函数内使用global语句声明该全局变量
3.6函数参数传递基础与数据类型可变性代码编写
函数参数
参数传递的基础
python常用数据类型对象可变性总结
函数体代码编写建议
如果函数接收的数据对象类型是可变对象,那么编写函数代码时,请避免修改参数所引用的对象
如果函数体代码中,确实需要对参数引用的对象进行修改时,请先将参数引用的对象创建一个副本,然后针对该副本对象进行操作
最后将修改后的副本对象返回给调用者即可
例
3.7位置参数、关键字参数和默认值参数
位置参数
关键字参数
默认值参数
默认值参数是一个函数定义时的概念,定义方法: 形式参数名 = 默认值
如果函数定义有多个形式参数,那么默认值参数必须放置在其他非默认值参数之后
如图默认值参数last,必须放置在fisrt参数之后,否则出错
3.8lambda表达式与函数结果返回
lambda表达式定义匿名函数
lambda表达式与等价的def函数定义
函数 VS 生成器 :return VS yield
3.9包和模块导入的基础知识
基础知识
模块导入
获取导入模块中的对象
3.10文件及目录的基础概念
文件:用于操作存放在磁盘空间的数据的对象
目录:用于管理文件路径的概念
从抽象层面来说,文件存在数据(文本或二进制格式);而目录存在子目录和文件的名字
文件绝对路径:文件系统维护着一个从根目录开始到所有文件的节点树。每一个文件反向追溯到文件系统目录都存在一个节点路径,这条路径就称之为该文件的文件绝对路径
文件相对路径:从文件系统维护的节点数中任选一个节点:x,从节点:x到所需访问的文件节点:y之间经历的节点路径就是所谓的节点:y相对节点:x的文件相对路径
3.11文件的绝对路径
文件绝对路径
文件相对路径1
文件相对路径2
3.12文件操作基本流程
打开文件
打开文件:file对象.open()
操作文件
关闭文件
基于pandas操作excel
4.1pandas简介与安装
4.2pandas数据结构-Series简介及创建
4.3获取Series对象中的值
4.4Series对象运算及删除对象元素方法
4.5DataFrame简介及其对象的创建
4.6列的选取、添加和删除
4.7索引操作基础及表达式的筛选
4.8DataFrame行列转置及使用numpy函数处理对象
4.9读取CSV文件与保存CSV文件
4.10CSV文件操作需求示例(上)
4.11CSV文件操作需求是例(中)
4.12CSV文件操作需求是例(下)
4.13操作excel文件与CSV文件的区别
excel文件
保存excel文件
浮动主题