导图社区 python
这是一个关于python的思维导图,包含简单程序的编写、程序流程控制、列表与元组、字典与集合、函数、文件与异常等知识点的总结。
编辑于2024-11-18 11:58:52python
简单程序的编写
变量与赋值
int 整数,float实数,str字符串
整数类型数据不能与字符串数据类型直接相加
一个=是赋值,两个=是等于
链式赋值
多个变量同时赋值: x=y=z=200 print(x,y,z) 200 200 200
解包赋值
a,b=100,200 print(a,b) 100 200 变量的个数必须与序列的元素个数一致
两个语句的交换: a=100 b=200 print(“a=”,a,“b=”,b) a=100,b=200 a,b=b,a print(“a=”,a,“b=”,b) a=200,b=100
数据的输入与输出
输入函数 input() 变量=input(“提示字符串”) 这种形式的input语句只能得到字符串文本,即用户输入的文本是字符串类型,输出结果也是字符串类型
变量=eval(input(“提示字符串”)) eval是内置函数,作用是去掉最外层的引号,把数字字符串变为实数类型
注意:input()函数输入的数据都是字符串类型,无法做减“-”运算,因此需要把输入的字符串转换成数值类型 m=input(“请输入整数1:”) n=input(“请输入整数2:”) print(“m和n的差是:”,eval(m)-eval(n))
输出函数print() 输出函数既有输出的功能又有计算的功能
print(“3+5=”,3+5) #输出第一项是字符串“3+5”,第二项是表达式3+5的值 3+5=8
print不换行:使用end=“ ”
数值
内置的数值运算
加法 + 减法 - 乘法 * 实数除法 / 整数除法 // (有小数点的往小的取) 取余 % 乘方 **
内置函数
abs(x)求x的绝对值 divmod(x,y)输出(x//y,x%y) pow(x,y) x**y 即x的y次方 round(x,2) 对x保留两位小数 max( ) 取最大值 min( ) 取最小值
math库
调用方法: import math print(math.pi) 3.1415926
math库函数: pow(x,y)x的y次方 exp(x)e的x次方 sqrt(x)x的平方根 log2(x)log2 X
字符串
序号
正向,从0开始 反向,从-1开始
索引访问
基本格式:若有字符串s,则s[索引值] 例如s[0]
区间访问:s[头下标 :尾下标] 表示在字符串s中取索引值从从头下标到尾下标(不含尾下标)
缺少头下标,则从字符串的最开始处取; 缺少尾下标,则取到字符串的最后一个字符; 头尾下标都没有,则取整个字符串
设置取的顺序
s[头下标:尾下标:步长]
当步长值大于0,正向取; 当步长值小于0,反向取; 取字符串的间隔数=步长值的绝对值减1
内置字符串运算符
+ 字符串拼接 * 字符串复制 in 判断元素是否在字符串里
内置字符串函数
len(x)返回字符串的长度 str(x) 将任意类型x转换为字符串
内置字符串处理方法
字符串的查找
find (x) / index(x) 查找x在字符串中首次出现的位置(索引值), rfind (x) /rindex(x) 查找x在字符串中最后一次出现的位置
例如:s=“bird,fish,monkey,rabbit” s.find('fish') #结果为5
count('x') 返回x在字符串中出现的次数
字符串分隔
split(),rsplit(),partition(),rpartition
字符串连接
join()
大小写转换
lower()小写,upper()大写,
字符串替换
s.replace(“小”,“small”)#把小替换为small
format()格式化方法
应用1️⃣
format(“x ”,“ y”,“ z”),从头到尾填充
应用2️⃣
“{:<填充字符> <对齐方式> <宽度>}”.format(“x”)
应用3️⃣
保留两位小数 “{:. 2f}”.format
程序流程控制
关系运算符:==等于,!=不等于,>大于,<小于,>=大于等于,<=小于等于
逻辑运算符:and,or,not
选择结构
单分支结构:if语句
格式:if 条件表达式: 语句块 当条件表达式成立,结果为true时,语句块将被执行
双分支结构:if-else语句
格式:if 条件表达式: 语句块1 else : 语句块2 当条件表达式的值为true时执行语句块1,否则执行语句块2
多分支结构:if-elif-else语句
格式:if 条件表达式1: 语句块1 elif 条件表达式2: 语句块2 elif 条件表达式3: 语句块3 else : 语句块n
循环结构
for 语句
格式:for 变量 in 迭代器 : 语句块
一个迭代器描述一个值序列。在for语句中, 变量按顺序取得迭代器表示的值序列中的各个值, 对每个值都将执行语句块一次。
1. 字符串作为迭代器 例如:for s in “abcde”: print(s,end=“ ”) 可以得到输出结果为 a b c d e for语句可以遍历字符串中的每一个字符
2.range()函数生成迭代序列 range函数是内置函数,调用这个函数就能生成一个迭代序列, 适合放在for语句的头部。
调用方式: 1. range(n),得到的迭代序列为:0,1,2,3,...,n-1 2. range (m,n), 得到的序列为:m,m+1,m+2,...,n-1 3.range(m,n,d),得到的序列为:m,m+d,m+2d,...,
while 语句
当条件成立的时候反复执行循环体,直到条件不成立时循环结束
格式:while 条件表示式: 语句块
break 和 continue 语句
break语句的作用是立刻结束整个for循环
continue语句的作用是结束这一轮的循环,程序跳转到循环头部,循环从头开始
else语句
用带else子句的循环结构判断n是否为素数: n=int(input(“请输入一个正整数n(n>=2):”)) for i in range(2,n): if n% i==0: print(n,“不是素数”) break else: print(n,“是素数”)
列表与元组
列表的格式: 列表名=[“ " ,“ ” ,“ ”]
“ ”里面存放元素,列表可以存放不同类型的元素, 可以是字符串,数字,或者是列表。 例如:group=[[“小红”,98],[“小紫”,96]] ⚠️列表中的元素元素可以相同
列表元素的索引和编号
列表元素索引 正向从0开始,反向从-1开始。 注意⚠️“ ”内的是一整个元素,占据一个索引值
列表元素 可变
1️⃣ 修改元素: 列表名[索引值]=新值 2️⃣ 增加元素:★列表名.append(“新元素”) #append()添加元素到列表尾部 ★列表名.insert(索引值,“新元素”) #insert()添加元素到指定位置 3️⃣ 删除元素:del 列表名[索引值] 列表名.pop (索引值) #输出结果终会单独呈现所删元素,当缺省时,默认删除最末尾的元素 列表名.remove (元素值)
遍历列表
1.用range( )函数 list=[" "," "] for i in range(7): #访问0-6 print("xx".format( list[i] ) )
直接遍历列表 for 元素 in 列表 list=[" "," "] for item in list : print("xx".format( item) )
列表排序
1.列表.sort() # 将列表从小到大进行排序
2.sorted(列表,reverse) ⚠️ sort()是原地排序,会直接改变列表本身 sorted()仅返回排序结果,不影响原列表
列表切片
格式:列表 [起始索引: 终止索引] 例如,guest[1:3] 提取的是guest列表中从索引1到索引2的两个元素 与字符串切片类似
格式: 列表[起始索引:终止索引:n] #每隔n个元素提取一个元素, 直到“终止索引”前的那个元素为止。 例如:guest[1:5:2] 提取的是guest[1],guest[3]两个元素所组成的切片
列表的扩充
"➕"运算 可以将两个列表相加,相加结果保存到一个列表里 参与的两个列表本身没有变化 guest=guests+list1
extend( ) 直接将新列表添加至原列表的后面 格式: 原列表. extend (新列表)
"*"运算 和字符串一致,指将列表中的元素重复多遍 guests*3 #将列表重复三遍,三遍都在一个列表里
列表的复制
1.切片 guest[ :] #表示取整个列表
2.copy 格式:list2=guests.copy()
属于深拷贝,对复制后的新列表的操作 不会影响原列表
3.直接赋值 list2=list1
属于浅拷贝,对复制后的新列表的操作 会影响原列表,慎用
列表的删除
清空列表:del list1[ :]
剩下一个空列表
删除列表:del list1
创建数值列表
1.利用input()函数 list=eval(input("请输入一个数值列表:\n")) #\n表示换行
2.通过list()函数转换 guests=list(range(1,11)) »»guests [1,2,3,4,5,6,7,8,9,10]
列表生成式
1.list=[ ] for i in range(1,11): list.append(i) »»list [1,2,3,4,5,6,7,8,9,10]
方法2️⃣
元组
元组使用圆括号"( )" 元组的元素不能修改,元组可以改
定义元组: tupscore=("晓峰","男",98) # 定义元组最直接的办法就是将多个元素用","隔开,放在"()"里 当定义的元祖只有一个元素时,要在元素后面写一个"," 例如:tupscore=("晓峰",)
元组充当列表元素
访问元素: group=[("晓峰",98),("杨过",96)] »»group[0] ("晓峰",98) »»group[0][0] '晓峰'
修改元素: 首先,元组里的元素不能直接修改, 但可以通过重新定义的方式进行元素的修改 例如: group1=[("晓峰",98),("杨过",96)] group1[0]=("晓峰",92) »» group1 [("晓峰",92),("杨过",96)]
转换函数
1.元组与列表之间的转换
list(),tuple()
2.split() 列表=字符串.split(分隔符) #将字符串拆分,并生成列表
字典与集合
创建字典: 1. {键1:值1,键2:值2} 2. dict() #转化为字典
键具有 唯一性 (键不能相同,值可以相同) 不可变性 (键必须是不可变的类型,可以是字符串,数字,元组,不能是列表,因为列表可变)
访问字典—通过访问键,键是字典的索引 》》dicarea[键1] 》》值1
若值是一个序列(列表),可以进一步通过"索引值"访问值序中的子元素 dicarea[键1][0]
添加条目: 字典名[键]=值 dicarea['键1']=值1 dicarea['键2']=值2
修改条目:字典名[键]=值 #键不能被单独修改
删除条目: 1.del 字典名[键] #删除条目 2.字典名.pop(键,默认值) #会弹出默认值 3.字典名.clear() #清空字典 4.deal 字典名 #删除整个字典
查找条目
1.键 in 字典 #返回结果为True或False 2.字典名.get(键)
示例: #统计英文句子中各字符出现的次数 sentence="Llife is short,we need happiness." sentence=sentence.lower() #将句子中的字符都统一为小写 counts={} #定义空字典 for c in sentence: if c in counts: counts[c]=counts[c]+1 else: counts[c]=1 #创建键值对
字典的遍历
键的遍历
for key in 字典名.keys() #访问和返回字典中所有的键
可以在通过 字典名[键] 的形式访问整个条目
值的遍历
for value in字典名.values() #访问和返回字典中所有的值
条目的遍历
for item in 字典名.items() #以"(键,值)"的形式访问和返回字典中所有的条目
集合
集合的元素不可变,不能重复
set可以将序列转化为集合
函数
函数的定义和调用
格式:def 函数名([参数列表]): 函数体
函数名可以任意定义,但不能是关键字
例如:def max(a,b): #a,b是形参 if a>=b:return a else:return b 函数调用:max(12,45)#12,45是实参 »» 45
文件与异常
文件路径的表示
"F:\\documents\python\5-1.py"
r "F:\documents\python\5-1.py"
文件的打开与关闭
file=open("文件名" , '打开模式' ) #有"➕"的都是可读可写,带"r"的只可读
file.close( )
写文件
file=open("mydata.txt",'w') file.write("飞雪连天射白鹿") 7 #自动显示字符数 file.write("笑书神侠倚碧鸳") 7 file.close( )
writelines()中的元素一定要是字符串
追加模式('a','a+')
file=open("mydata.txt",'w') file.write("笑书神侠倚碧鸳") #从头开始覆盖写 file.close()
file=open("mydata.txt",'r') file.write("笑书神侠倚碧鸳") #从末尾追加写 file.close()
读文件
file=open("mydata.txt",'r') text=file.read() #结果会读出文件所有内容并以一个字符串形式进行返回, 分隔符\会一并读出
file=open("mydata.txt",'r') text=file.readline() #每次只读一行,读出文件当前行,一个语句读一行,依次进行
中文文本分析基础
使用方法: import jieba
子主题