导图社区 python
基础知识框架,内含代码。本思维导图主要内容有:python编程的基础知识、编程错误的、编程习惯。
编辑于2022-04-23 08:58:36python-解释型,执行慢,不能加密。可跨平台
一、基础
廖雪峰python教程,交互式python
第一个python程序
1.变量:先赋值再使用。必须大小写英文、数字和_的组合,×数字开头
符合标识符命名规范
赋值语句=,动态语言类型不固定
2.标识符和关键字
标识符
包名全小写,类名大驼峰,变量名/函数名小驼峰,常量全大写
关键字
3.输入和输出
input
output
4.数据类型转换
数据类型

1.整型int:整数,可以_分隔
表示方法
科学计数法1e-6
16进制0x 0-9 A-F
2进制0b 0 1
2.浮点型float:小数,e代替10,1.23e9=1.23*10的九次方
3.字符串str
表现形式:′a′、"aa"、""""aa""""、′′′′aa′′′′
三引号注释或者输入包含多行字符串""" ..."""
原句中,有单引号就用双引号,有双引号就用单引号
转义字符\
' "都包含,转义字符\:'T\'m\"OK\"!'->I'm "OK"!。\在引号前
\\表示\
r''表示' '内部字符串默认不转义
代码太长用()整体括或者\每行末
换行符 a = ("hello"'\n'"hi") print(a)
hello hi
操作
1.查看长度len(s)
2.与数字乘重复
3.分割s.split()按空格或制表符\t换行符\n分割
s.split(sep)给定分隔符
line = "1,2,3,4,5" numbers = line.split(',') print(numbers )
numbers = line.split()效果一样
4.连接s.join(str_sequence)
5.替换s.replace(part1指定部分,part2想要部分) 生成新字符串,原值不变
6.大小写转换,生成新字符串
大写s.upper()
小写s.lower()
7.去除多余空格
去两端得新字符串s.strip()
去开头得新字符串s.lstrip()
去结尾得新字符串s.rstrip()
函数dir(s)查看所有方法
不同类型与字符串转化
强制转化字符串
str(ob)或repr(ob)
整数->字符串
十六进制hex(255)
八进制oct(255)
二进制bin(255)
字符串->整数
int('23')
int('FF',16)
int('377',8)
int('11111111',2)
字符串->浮点数
float('3.5')
格式化字符串format()
s='{color} {0} {x} {1}'.format(10,'foo',x = 1.5,color='blue') print(s)
索引,从0开始,反向-2是倒数第二个s[-2]
分片:提取想要子序列
var[lower包括:upper不包括:step间隔没有默认1]
包含的元素个数等于s[1:3],3-1=2,包括左边不包括右边
s[::2]每隔两个取一个值,从0开始 s[::-1]从结尾开始分到开头
4.布尔值,True、False两种值
and与运算,都真为真
or或运算,有一个为真为真
not非运算,单目,not True->False
5.空值None
6.常量:不能变的变量,全大写
PI = 3.14159265359
除法/:永远浮点数
地板除//:永远整数
取余%
类型转换
1.字符串->整型:int(str数字)
int('1')->1
2.浮点型->整型:int(float) 只保留整数
print(int(-3.32))->-3
3.字符串->浮点型:float(str)
4.整型->浮点型:float(int)
print(float(1))->1.0
5.浮点型->字符串:str(float)
6.整型->字符串:str(int)
5.字符串和编码
字符编码 1字节byte=8比特bit,字节最大整数二进制11111111=十进制255
UTF-8可变长编码,ASCII是其部分。英文1字节,汉字3字节
字符串:Unicode编码,类型str,需要传输变成bytes为单位,x=b'ABC'
ord()函数获取字符整数表示
字符串之间bytes、str转换参考廖雪峰字符串和编码
UTF-8编码
转义%%
format()
f-string
6.有序集合,可存放任何数据的列表 元组、字典、集合。廖雪峰list和tuple
都从0开始计数
运算符
1.算术运算符
幂**:a=10,b=20:a**b 10的20次方
//取整除 -9//2=-5
绝对值abs(-12.4)->12.4
取整round(21.6)->22
类型type()
2.比较运算符 支持链式比较
x = 2 1 < x <= 3 True
3.位运算符
1 1 2 10 4 100 8 1000 13=8+5 1001 1010 1011 1100 1101 最高位符号位 正数为0负数为1 补全 0000 1101 16 10000 32 100000 64 1000000 128 10000000 256 100000000 1024 10000000000
a=60 b=13
4.逻辑运算符
not:非
5.成员运算符:包括字符串、列表或组合
6.身份运算符:判断两个变量引用对象是否为同一个
条件判断if:冒号!
不需要{},不需要()括起来 未缩进4格,是无论怎样都会被执行的语句
非0和非空(null)值为true,0或null为false
False:False None 0 空字符串 空列表 空字典 空集合
else只有一个或无,elif无限制
and or可以不加括号
优先级:括号 判断符号 and or
循环 冒号!
list(range(101)):0-100的整数序列 sum = 0 for x in range(101): sum = sum+x print(sum) 5050
循环类型
for循环
for...in循环:依次迭代元素 尽量不改变in后面的值
#一次遍历表元素 L = ['B','L','A'] for i in L: print('hello,%s!'%i)
#求和 total = 0 for i in range(100): total += i print(total)
子主题
while循环:条件满足循环,不满足退出循环
numbers = [12,37,5,42,8,3] even = [] odd = [] while len(numbers)>0: number = numbers.pop() if(number%2 == 0): even.append(number) print(numbers) else: odd.append(number) print(numbers)
i = 1 while i< 6: print('*'*i) i += 1 num=[]
# 请编写你的答案 n = 0 while n < 5: m = 0 while m <= n: print('*',end = " ") m +=1 print() n +=1
while...else false时执行else语句块
while if
continue跳过该次,返回到循环最开始重新执行
i = 1 while i <10: i += 1 if i%2 >0: continue print(i)
even number
values = [7, 6, 4, 7, 19, 2, 1] for i in values: if i % 2 != 0: # 忽略奇数 continue print (i/2)
3.0 2.0 1.0
break跳出循环,无论循环条件是否满足
i = 1 while 1: print(i) i += 1 if i > 10: break
command_list = ['start', 'process', 'process', 'process', 'stop', 'start', 'process', 'stop'] while command_list: command = command_list.pop(0) if command == 'stop': break print(command)
遇到第一个stop就跳出循环,结束
else,while和for+else,要与break一起用
values = [7, 6, 4, 7, 19, 2, 1] for x in values: if x <= 10: print ('Found:', x) break else: print ('All values greater than 10')
values = [11, 12, 13, 100] for x in values: if x <= 10: print ('Found:', x) break else: print ('All values greater than 10')
循环控制语句:更改语句执行顺序
容器类型
 不可变时,可以b.replace('a','A'),而a='abc'本身不改变
1.列表list:可变格式[] 空列表list=[]或list() 字符串不可变
操作
1.查看长度len()
2.索引
3.切片:1个列表分为多个列表
结果都有[ ]
print(n[-4:-2])->[2,3]倒数:从-1开始计数,不取-2,取索引为-3,-4的值
4.添加:
5.删除:
6.从属关系 in not in
7.index查找元素位置
8.count查找某元素出现次数
9.修改:n[2]=1->[1,2,1,4,5]
10.排序sort()默认由小到大 a = [10,1,11,13,11,2]
a.sour()->[1,2,10,11,13]
倒序a.sort(reverse=True)->[13,11,11,10,2,1]
不改变原列表值b = sorted(a),输出原来的和新的
13.列表反向reverse()
不改变原列表值,输出原来的和新的
b = a[::-1] print("a:",a) print("b:",b)
12.交换:连续赋多个值
a=3 a,b=1,a
从左往右,a=1,b=3(a一开始的变量赋给b,不是a赋值后的结果)
2.元组tuple:一旦初始化无法更改。更安全
如果tuple里面有list,则list可以更改
可以索引,切片
单个元素元组
注意,逗号
列表->元组
可以count index
3.字典 key键值唯一的:value值可变,可存储任意类型
空字典 插入键值 查看键值 更新键值 初始化字典
不支持数字索引
键不可变,值可以变 数据类型都可以不同
键:整数、字符串、元组(有序)。浮点数×(精度要求)
字典方法
1.索引不存在的键:get()
2.删除:pop()
3.更新:update() d.update(newd)将字典newd的内容更新至d
4.in查询是否存在
5.d.keys()返回由所有键组成的列表
6.d.values()返回由所有值组成的列表
计算字典值之和
myDict = {'a':100,'b':200,'c':300} print(sum(myDict.values())) ->600
7.d.items()返回由所有键值对元组组成的列表
4.集合set无序,无重复值(唯一性)
创建集合set()
集合操作
1.并
union或|
2.交
a.intersection(b)或a&b,print(a&b)
{3,4}
3.差
a.difference(b)或a-b
a-b a有b没有
{1,2}
b-a b有a没有
{5,6}
4.对称差 并集减去共有的
a.symmetric_difference(b)或a ^ b
5.包含
b是不是a的子集
b.issubset(a)或b <= a
a是不是b的子集
a是不是自己的真子集
a <= a->True
a < a->False
集合方法 t = {1,2,3}
1.add添加单个元素 t.add(5)
2.update添加多个元素 t.update([5,6,7])->[1,2,3,4,5,6,7]
3.remove移除单个元素 t.remove(1)->[2,3,4,5,6,7]
移除不存在元素报错
4.discard移除元素,不存在不报错 t.discard(10)
5.pop弹出元素 删除并返回任意元素,没有元素报错
4.有序字典
5.公共函数
6.字符串
函数
1.函数的定义和调用
2.不定长参数函数
3.匿名函数
4.递归函数
5.可变和不可变类型
文件操作
1.文件的打开和关闭
2.文件的读写
3.OS模块文件和目录相关操作
4.文件应用案例
二
python编程错误点
1.EOF when reading a line:
只能在父进程用input,在子进程不能调用
2.list indices must be integers or slices, not tuple
列表list的索引必须是整数或者切片,而不能是字符串类型
3.Python报错:TypeError:not supported between instances of 'str' and 'int'
字符串未转化便和整数比较
m = input() n = int(m)
python编程习惯
不要忘记加冒号:
注意缩进,要么tab要么打4个空格