导图社区 Python基础语法
由海南大学机电工程学院自动化2021-4某吴姓同学制作 仅供参考
编辑于2022-03-13 16:06:38[1]Python基础语法
1.开发环境介绍
1.计算机组成
中央处理器:CPU
内存储器:内存
外存储器:硬盘,U盘
2.Python简介
Python历史
https://baike.baidu.com/item/Python/407313?fr=aladdin
学习框架
Google开源机器学习框架:TensorFlow
开源社区主推学习框架:Scikit-learn
百度开源深度学习框架:Paddle
3.课程介绍
4.解释器的作用和分类
解释器的作用:运行文件
Python解释器种类
5.Python解释器的下载和安装
下载后缀为executable installer的文件
6.PyCharm的作用
是一种Python IDE(集成开发环境),集成了很多功能
7.下载和安装PyCharm
8.新建项目
上面的那个是虚拟环境
9.新建书写运行文件
10.PyCharm界面设置
11.PyCharm修改解释器
12.PyCharm项目管理
New Window和Attach的区别
13.PyCharm总结
虽然也有用过PyCharm,但我用的是VScode
2.变量和数据类型
1.注释
可读性
单行注释
快捷键:Ctrl+/
多行注释
2.变量的作用
变量:一个存储数据时当前数据所在的内存地址的名字而已
3.定义变量
语法:变量名 = 值
标识符命名规则
命名习惯
4.使用变量
5.认识bug
6.Debug工具
查看程序的执行流程细节,调解错误
打断点
小红点
一步一步调试
7.认识数据类型
不能修改
键值对
print(type(???))
8.变量章节总结
9.输出 认识格式化符号
10.输出 格式化符号基础使用方法
' %? ' % xx
' %? %?' % (xx, xx)
11.输出 格式化符号高级使用方法
12.输出 拓展格式化字符串
13.输出 f-格式化字符串
更高效
14.输出 转义字符
15.输出 print结束符
可以改end="???"
16.输出总结
3.数据类型转换和运算符
1.了解输入
输入的当成 字符串str
2.输入功能实现
3.体验数据类型转换
eval转换成原本类型
4.数据类型转换函数
5.总结数据类型的转换
6.PyCharm交互式开发
回合制
7.运算符的分类
8.算术运算符
混合运算优先级顺序
9.赋值运算符
单个变量赋值
多个变量赋值
按顺序
多变量赋相同值
10.复合赋值运算符
11.复合赋值注意点
先算复合赋值运算符右面的表达式,再算复合赋值运算
12.比较运算符
==
!=
>, <, >=, <=
13.逻辑运算符
或or
一真则真,都假才假
与and
都真才真
非not
14.逻辑运算符书写习惯
加( )防止歧义
15.数字的逻辑运算
16.运算符总结
4.if语句
1.if的作用和语法
条件语句
2.体验if
3.网吧上网(简单版)
4.网吧上网(进阶版)
5.if else
记得冒号
6.if语句执行流程
7.多重判断的作用和语法
else放最后
8.体验多重判断
9.elif的执行流程
10.拓展-条件写法
运算符化简
11.if嵌套的作用和语法
缩进
12.if嵌套案例-判断能否上车
13.if嵌套案例-判断是否能坐下
14.if嵌套执行流程
15.猜拳游戏的步骤分析
16.猜拳游戏功能实现
17.随机数
导入模块:import random
开始 <= ? <= 结束,有包含的
18.猜拳游戏-随机数
19.三目运算符
三目运算符=三元运算符=三元表达式
else 后不用xx=
20.if章节总结
5.while循环
1.循环章节课程介绍
2.了解循环
重复执行
分类:while和for
3.while的语法和体验
4.计数器书写习惯
初始值取个0,后面用<或>,不用<=或>=
5.循环的执行流程
6.循环应用 1-100累加
7.循环应用 1-100偶数累加和方法1
条件判断和2取余数则累加
推荐这种,把运算交给机器去做
8.循环应用 1-100偶数累加和方法2
计数器控制
i += 2
9.循环的注意事项
小心死循环
10.了解break和continue
11.break
终止此(整个)循环
12.continue
退出当前一次循环继而执行下一次循环代码
如果使用continue,在continue之前一定要修改计数器,否则进入死循环
13.while循环嵌套的作用和语法
14.while循环嵌套快速体验
15.循环的执行流程
子循环与父循环
16.while循环嵌套应用之打印星号(正方形)
换行 -> print()
修改end=""
17.while循环嵌套应用之打印星号(三角形)
每行星星的个数和行号数相等
while i <= j:
i 和 j 要联动
18.while循环嵌套应用之九九乘法表
6.for循环
1.for循环语法和体验
2.break退出for循环
终止整个循环
3.continue退出for循环
跳出执行下个循环
4.循环的else简介
else下方缩进的代码是:当循环正常结束之后要执行的代码
5.while else
循环正常结束之后执行
6.while else之break
break终止循环是非正常循环,不可执行else
7.while else之continue
是正常结束循环,可执行else
8.for else
9.for else之break和continue
同while else
10.总结
7.字符串
1.学习字符串的必要性
2.认识字符串
单引号''
双引号""
三引号
可多行,支持回车换行
'''???'''
"""???"""
转义'
I'm
\' -> '
3.字符串输出
4.字符串输入
input都是str
5.下标
下标=索引
从0开始
变量名 [ 编号 ]
6.切片简介
字符串、元组、列表都支持切片操作
不写开始,则默认从0开始
不写结束,则选取到最后
都不写,[ : ]选取所有
如果步长为负数,[ : : -1]倒叙选取
-n表示倒数第n个
没有-0
如果 选取方向(下标开始到结束的方向)和 步长的方向 冲突,则无法选取数据
[ -4 : -1 : -1 ]
注意
包含开始位置下标,但不包含结束位置下标!
7.体验切片
8.字符串常用方法简介
查找、修改、判断
9.字符串常用操作方法之查找
查找子串在字符串中的位置或出现的次数
find()
检测某个子串是否包含在这个字符串中
在:返回这个子串开始的位置下标
从0开始
不在:返回-1
只是查出找到的第一处
开始和结束可省略
rfind()
index()
检查到子串不存在,会直接报错
其余和find()一样
rindex()
count()
找出现的个数(返回某个子串在字符串中出现的个数)
10.字符串常用操作方法之修改
replace()
替换
替换次数省略不写则为全部替换
替换次数过多则全部替换
有返回值,返回值是修改后的
数据是否可以改变
可变类型
字符串
原有数据不变,需要新变量存储
不可变类型
split()
按照指定字符分割字符串,返回一个列表[],丢失分割字符
num表示:分割字符出现的次数(切几刀)
还能分割空格
join()
合并列表[]里面的字符串为一个大字符串
'xxx'.join(???)
join里的在前,.前的为连接符
11.字符串常用操作方法之修改之大小写转换
capitalize()
将字符串第一个字符转换成大写
只是字符串第一个字符大写,其余全都小写
title()
将每个单词首字母转换成大写
lower()
将字符串中的 大写 转换成 小写
upper()
将字符串中的 小写 转换成 大写
12.字符串常用操作方法之修改之删除空白字符
lstrip()
删除字符串左侧空白字符
rstrip()
删除字符串右侧空白字符
strip()
删除字符串两侧空白字符
13.字符串常用操作方法之修改之字符串对齐
ljust()
返回一个原字符串左对齐,并使用指定字符(默认空格)填充至对应长度的新字符串
rjust()
返回一个原字符串右对齐,并使用指定字符(默认空格)填充至对应长度的新字符串
center()
返回一个原字符串居中对齐,并使用指定字符(默认空格)填充至对应长度的新字符串
14.字符串常用操作方法之判断开头或结尾
startswith()
检查字符串是否是以指定子串开头
是:返回True
否:返回False
如果设置开始和结束位置下标,则在指定范围内检查
endswith()
检查字符串是否是以指定子串结尾
15.字符串常用操作方法之判断
isalpha()
如果字符串至少有一个字符并且所有字符都是字母,则返回True,否则返回False
isdigit()
如果字符串只包含数字,则返回True,否则返回False
isalnum()
如果字符串至少有一个字符并且所有字符都是字母或数字或组合,则返回True,否则返回False
isspace()
如果字符串中只包含空白,则返回True,否则返回False
16.字符串总结
8.列表和元组
1.列表简介
列表可一次性存储多个数据,且可以为不同数据类型
常用操作:增、删、改、查
2.下标
从0开始
3.查找函数
index()
返回指定数据坐在位置的下标
如果查找数据不存在则报错
count()
统计指定数据在当前列表中出现的次数
没有则为0
len()
访问列表长度,即列表中数据的个数
公共方法,都能用
4.判断是否存在
in
判断指定数据在某个列表序列
在:返回True
不在:返回False
not in
判断指定数据在某个列表序列
在:返回True
不在:返回False
5.体验案例-判断是否存在
6.列表增加数据之append
append()
列表结尾追加数据
如果append()追加的数据是一个序列,则追加整个序列到列表(不拆开)
列表为可变数据
insert()
指定位置新增数据
新增数据下标为设定下标,原先下表数据后移
7.列表增加数据之extend
extend()
列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表
单个数据:字符串会拆分成一个一个的字符
序列数据:拆开成一块一块
8.列表增加数据之insert
insert()
指定位置新增数据
新增数据下标为设定下标,原先下表数据后移
9.列表删除数据
del
del ()
也可以加()
删除列表
删除指定数据
pop()
删除指定下标的数据(默认为最后一个),并返回该数据
remove()
移除列表中某个数据的 第一个 匹配项
只会删除匹配到的第一个
clear()
清空列表,返回空列表
10.列表修改数据
修改指定下标数据
直接改
逆置:reverse()
颠倒列表
排序:sort()
reverse表示排序规则
reverse = True 降序
reverse = False 升序(默认)
默认从小到大
11.列表复制数据
copy()
+.copy()
12.列表的遍历之while
需求:依次打印列表中的各个数据
13.列表的遍历之for
14.列表嵌套
一个列表里面包含了其他的子列表
15.随机分配办公室的步骤分析
16.随机分配办公室的实现代码
17.列表总结
18.体验元组
type
一个元组可以存储多个数据,元组内的数据是不能修改的
19.定义元组
元素特点:定义元组用小括号(),且逗号隔开各个数据,数据可以是不同的数据类型
只有一个也得加逗号
20.元组常见操作之查找
不支持修改,只支持查找
按下标查找数据
index()
查找某个数据,如果数据存在返回对应的下标,否则报错
语法和列表、字符串的index方法相同
count()
统计某个数据在当前元组出现的次数
len()
统计元组中数据的个数
21.元组数据的修改操作
元组内的数据如果直接修改则立即报错
但是如果元组里面有列表,修改列表里面的数据则是支持
故自觉很重要,尽量不改
22.元组的总结
定义元组
常用操作方法
index()
len()
9.字典和集合
1.字典的应用场景
保证数据顺序变化前后能使用同一的标准查找数据
字典不支持下标:字典里的数据以键值对形式出现,和数据顺序没关系
key-value
2.创建字典的语法
符号为 {大括号}
函数dict()
数据以键值对形式出现
逗号隔开
有数据字典
空字典
3.字典常用操作之新增
字典序列 [key] = 值
字典为 可变类型
如果key存在,则修改这个key对应的值
如果key不存在,则新增此键值对
4.字典常用操作之删除
del() 或 del
删除字典或删除字典中指定键值对
clear()
清空字典
5.字典常用操作之修改
6.字典常用操作之查找
key值查找
如果当前查找的key
存在:返回对应的值
不存在:报错!
会报错
get()
如果当前查找的key
不存在:返回第二个参数(默认值) 如果省略第二个参数,则返回None
不报错
keys()
查找字典中所有的key,返回可迭代对象
values()
查找字典中所有的value,返回可迭代对象
items()
查找字典中所有的键值对,返回可迭代对象
里面的数据是元组,元组数据1是字典的key,元组数据2是key对应的值
7.字典的循环遍历之key
8.字典的循环遍历之value
9.字典的循环遍历之键值对
返回一个个元组
10.字典的循环遍历之键值对(拆包)
记得复习元组
11.字典的总结
12.创建集合
{ }
set( )
小括号!
创建空集合只能使用set( ),因为{ }用来创建空字典
字符串会拆开
集合有去重功能
字典和集合的区别
字典习建值对出现,而集合是以当个元素。就好比,字典中每当进去一个东西,都给这东西取个名字。
13.集合常见操作之增加数据
add()
因为集合有去重功能,所以当集合内追加的数据是当前集合已有数据的话,则不进行任何操作
只能追加单一数据,追加列表会报错
update()
追加的数据是序列,不能只是一个数据
原来有的不重复
14.集合常见操作之删除数据
remove()
删除集合中的指定数据
如果数据不存在则报错
discard()
删除集合中的指定数据
如果数据不存在不会报错
pop()
随机 删除某个数据,并返回这个数据
随机的
15.集合常见操作之查找数据
in
判断数据在集合序列
not in
判断数据不在集合序列
16.集合总结
10.公共的方法
1.公共操作之运算符加号
合并
不支持字典
2.公共操作之运算符乘号
复制
不支持字典
3.公共操作之运算符判断数据是否存在
也可以查dict.keys()或dict.values()
4.公共操作之len
len()
计算容器中元素个数
5.公共操作之del
del 或 del()
删除
6.公共操作之max和min
max()
返回容器中元素最大值
min()
返回容器中元素最小值
字母有ASCll码,也可以比大小
7.公共操作之range
range(start, end, step)
生成从start到end的数字,步长为step,供for循环使用
默认
从0开始
步长为1
8.公共操作之enumerate
enumberate()
函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环中
第二个参数start可省略不写
start参数用来设置遍历数据的下标的起始值,默认为0
enumberate 返回结果是元组,元组第一个数据是原迭代对象的数据对应的下标,元组第二个数据是原迭代对象的数据
9.容器类型转换
tuple()
将某个序列转换成元组
list()
将某个序列转换成列表
set()
将某个序列转换成集合
子主题
字典和集合的区别
字典
无序的数据集合,使用print输出字典的时候,通常输出的顺序和定义的顺序不一致
可变容器模型,且可存储任意类型对象
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一
集合
是无序的,不支持下标索引
可变的数据类型
元素唯一,可去重(一般用于元组或者列表中的元素去重)
且不能直接使用 s1={},这样是空字典而不是集合
相同点:都无序
不同点:集合去重,且不支持下标
11.推导式
1.了解推导式
作用:化简代码
列表推导式
字典推导式
集合推导式
2.while循环创建有规律的列表
列表推导式/列表生成式
作用:用一个表达式创建一个有规律的列表或控制一个有规律列表
while循环实现
3.for循环创建有规律的列表
4.体验列表推导式
列表推导式实现
5.带if的列表推导式
(需求:创建0~10的偶数列表)
range()步长实现
if实现
6.多for实现列表推导式
列表里面追加元组:循环前准备一个空列表,然后追加元组数据到列表
多for的列表推导式 = for循环嵌套
7.体验字典推导式
作用
快速合并列表为字典
提取字典中目标数据
体验
8.合并两个列表为字典
如果两个列表数据个数
相同:len统计任何一个列表的长度都可以
不同
len统计数据多的列表 -> 报错
len统计数据少的列表 -> 不会报错
多余的丢掉
9.提取字典中目标数据
counts.items() -> 获取所有键值对信息
10.集合
集合推导式
会去重
11.推导式总结
12.函数基础
1.了解函数
函数:将 一段具有独立功能的代码块 整合到一个整体并 命名,在需要的位置 调用这个名称 即可完成对应的需求
代码重用
模块化
2.函数的使用步骤
定义函数
调用函数
参数可有可无
在Python中,函数必须 先定义后使用
3.快速体验函数
4.函数的注意事项
没调用就不执行,定义时不执行
5.函数的参数的作用
参数为形参
真实数据为实参
6.体验函数返回值
7.return的特点
负责函数返回值
退出当前函数
return下方的所有代码(函数体内部)不执行
8.函数返回值的应用
9.函数的说明文档
注释
定义 函数的说明文档/函数的文档说明
可换行
查看 函数的说明文档
help(***)
help函数作用:查看函数的说明文档(函数的解释说明的信息)
体验
10.函数嵌套调用
函数嵌套调用:一个函数里面又调用了另外一个函数
11.函数嵌套调用应用之打印横形图形(一)
打印一条横线
12.函数嵌套调用应用之打印横形图形(二)
打印多条横线
13.函数嵌套调用应用之函数计算(一)
14.函数嵌套调用应用之函数计算(二)
15.函数的总结
13.函数提高
1.函数二学习目标简介
变量作用域
变量生效的范围
局部变量
全局变量
2.局部变量
定义在函数体内的变量
只在函数体内部生效
在外面访问则直接报错
作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量
3.访问全局变量
在函数体内、外部都能生效的变量
4.修改全局变量
直接在函数内部赋值:函数内改的是局部变量=在函数内声明了一个新的局部变量
函数体内部修改全局变量:先global声明XX为全局变量,然后再对变量重新赋值
5.多函数执行流程
共用全局变量
某函数不调用就不生效
6.返回值作为参数传递
7.函数的返回值
返回多个值
8.函数参数之位置参数
位置参数:调用函数时根据函数定义的参数位置来传递参数
传递和定义参数的顺序及个数必须一致,不然会报错
9.关键字参数
函数调用,通过“键=值”形式加以指定
让函数更加清晰、容易使用
清除了参数的顺序需求
位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序
10.缺省参数
缺省参数/默认参数
作用:定义函数,为参数提供默认值
调用函数时可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)
如果为缺省参数传值则修改默认参数值;否则使用这个默认值
不定长参数 = 可变参数
用于不确定调用的时候会传递多少个参数(不传参也可以)的场景
包裹位置参数
包裹关键字参数
都是组包的过程
11.不定长参数之位置参数
包裹(packing)位置参数
接收所有位置参数,返回一个元组
都没有的时候就是空元组
元组是一个星号*
12.不定长参数之关键字参数
包裹关键字传递
字典是两个星号**
拆包
13.元组拆包
14.字典拆包
交换变量值
15.交换变量的值之方法一
借助第三变量存储数据
16.交换变量的值之方法二
a, b = b, a
引用
在Python中,值是靠引用来传递来的
id()
判断n个变量是否为同一个值的引用
id值=那块内存的地址标识
17.了解引用之不可变类型
不可变类型:int类型
18.了解引用之可变类型
可变类型:列表
19.引用当做实参传入
int:计算前后id值不同
列表:计算前后id值相同
20.可变和不可变类型
可变类型
数据能够直接修改
列表,字典,集合
不可变类型
数据不能够直接修改
整型int,浮点型float,字符串,元组
21.函数二总结
14.函数应用-学员管理系统
1.函数加强简介
2.学员管理系统需求和步骤分析
了解需求
分析步骤
按步骤实现代码
3.学员管理系统框架搭建
定义功能函数
1.显示功能界面
2.用户输入功能序号
3.按照用户输入的功能序号,执行不同的功能(函数)
4.代码调优
用else填补其余特殊情况
5.学员管理系统数据形式的分析
6.添加学员功能分析
7.添加学员之用户输入
8.添加学员之新增数据
9.添加学员之重名提示
10.删除学员思路分析
11.删除学员代码实现
12.修改学员思路分析
13.修改学员代码实现
14.查询学员思路分析
15.查询学员代码实现
16.显示所有学员信息
17.退出系统
15.递归函数和匿名函数
1.了解递归
递归的特点
函数内部自己调用自己
必须有出口
应用
快速排序
2.递归之回顾函数返回值
3.递归代码实现
要好好理解“必须有出口”
num = num - 1
4.递归的执行流程
5.递归出口问题
如果没有出口,则报错
超出最大递归深度
6.了解lambda
如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化
作用:提高运算效率
名称:匿名函数
注意
7.体验lambda
注意
第一个是 地址
第二个是 值
8.lambda实例之计算两个数字累加和
9.lambda参数之无参数
10.lambda参数之一个参数
11.lambda参数之默认参数
12.lambda参数之args
可变参数:*args
返回的是元组
*XXX都行
eg
13.lambda参数之kwargs
可变参数:**kwargs
返回的是字典
eg
14.lambda应用之带判断的lambda
带判断的lambda
两个数比大小
15.列表内字典数据排序
列表数据按字典key的值排序
16.内置函数
1.了解高阶函数
高阶函数:把函数作为参数传入
高阶函数是函数式编程的体现
函数式编程就是指这种高度抽象的编程范式
2.abs和round
abs()
对数字求绝对值
round()
对数字的四舍五入计算
3.体验高阶函数的思路分析
方法一
方法二
更简洁,更灵活
函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快
4.体验高阶函数的代码实现
优点:可灵活修改要使用的函数
5.内置高阶函数之map
map()
将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)返回
map()表达式是 内存地址
6.内置高阶函数之reduce
先 import functools
reduce()
其中func必须接收两个参数
每次func计算的结果继续和序列的下一个元素做累积计算
7.内置高阶函数之filter
filter()
过滤掉不符合条件的元素(过滤序列),返回一个filter对象
如果要转换成列表,可以使用list()来转换
filter()表达式是 内存地址
8.函数加强总结
17.文件操作
1.了解文件操作
目标
文件操作的作用
把一些内容(数据)存储起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力
2.文件操作步骤
1.打开文件
open()
打开一个已经存在的文件,或者创造一个新文件
没有则会创建
'w'
写入
打开文件模式
2.读写操作
write()
read()
3.关闭文件
close()
可以只打开和关闭文件,不进行任何读写操作
访问模式
3.访问模式特点一
'r'
只读
如果文件不存在,则报错
不支持写入操作,否则(写入或修改的话)会报错
'w'
只写(写入)
如果文件不存在,则新建文件
执行写入,会 覆盖 原有内容
'a'
追加
如果文件不存在,则新建文件
在原有内容基础上,追加新内容
访问模式参数可以省略
如果省略则表示访问模式为r
4.读取函数之read
read()
如果没有传入num,则表示读取文件中的所有数据
文件内容如果换行:底层(最右边)有\n,多占一个字节
导致read书写参数读取出来的和眼睛看到的个数不匹配
5.读取函数之readlines
readlines()
可以按照行的方式把整个文件中的内容进行一次性读取
返回的是一个列表,其中每一行的数据为一个元素
6.读取函数之readline
readline()
一次读取一行内容
7.访问模式特点二
带 b 的:都是以二进制格式操作文件
带 + 的:都是可读可写模式
带 b+ 的:可读可写+二进制格式
区别
基于原规则
例如'r'需要文件存在
'r'
文件指针在文件的开头
'w'
文件指针也在开头
'a'
文件指针在结尾
r 文件不存在会报错;w和a 文件不存在会新建
8.访问模式特点二之代码测试
9.seek函数
seek()
作用:用来移动文件指针
起始位置
体验
r 改变文件指针位置:改变读取数据开始位置 / 把文件指针放结尾(无法读取数据)
a 改变文件指针位置:做到可以读取出来数据
10.文件备份的作用
步骤
11.文件备份思路分析
12.文件备份之接收用户输入
13.文件备份之规划文件名
14.文件备份之数据写入
循环读取写入
15.文件备份之限制有效文件名备份
添加条件判断即可
16.文件操作函数
在Python中文件和文件夹的操作要借助os模块里面的相关功能
导入os模块
使用os模块相关功能
os.rename()
文件重命名
找不到则报错
os.remove()
删除文件
找不到则报错
17.文件夹操作函数之创建和删除
os.mkdir()
创建文件夹
os.rmdir()
删除文件夹
18.文件夹操作函数之路径相关函数
os.getcwd()
获取当前文件所在目录路径
os.chdir()
改变默认目录(切换目录)
os.listdir()
获取目录列表
获取某个文件夹下所有文件,返回一个列表
19.文件夹操作函数之rename
rename同样适用于文件夹
20.批量重命名之添加字符串
体验
21.批量重命名之添加和删除字符串
体验
22.文件总结
注意(易错)
此思维导图由 海南大学自动化4班吴扬键 制作
1.字符串记得加引号''