导图社区 python
这是一篇关于python的思维导图,主要内容包括:计算生态概览,计算机生态,程序设计方法,文件和数据格式化,组合数据类型,函数和代码复用,程序的控制结构,基本数据类型,基本图形绘制,基本语法元素。
编辑于2024-09-09 09:14:34python
基本语法元素
基本语法元素
程序设计基本方法
编写方法
IPO
Input输入,程序的输入
process处理,程序的主要逻辑
output输出,程序输出
问题计算部分
计算机只解决计算问题
一个问题有多种角度理解,产生不同的计算部分
问题计算都有输入,输出,过程
解决步骤
分析问题
分析问题计算部分
划分边界
划分问题功能边界,规划IPO
设计算法
设计问题的求解算法
编写程序
调试测试
升级维护
开发环境配置
python语言概述
wibdows系统开发环境
Mac系统开发环境
Linux系统开发环境
Web系统开发环境
编写与运行
两种编程方式
交互式
对每个输入语句即时运行结果,适合语法练习
文件式
批量执行一组语句并运行结果,编程的主要方式
例子:温度转换
语法元素分析
程序的格式框架
缩进
特征:前面存在空格
作用
表达程序的格式框架
特点
严格明确
是语法中一部分,影响程序运行
所属关系
表达代码间包含和层次关系的唯一手段
长度一致
程序内一致即可,一般用4个空格或者1个TAB键
注释
特征
单行注释
以#开头,为后面内容注释
多行注释
以‘‘‘开头和结尾
‘‘‘第一行 第二行’’’
作用
用于提高代码可读性的辅助性文字,不被执行
快捷键(开关一致)
Ctrl+/
命名与保留字
变量
特征
TempStr
TemStr=“82F”#向变量TemStr赋值“82F”
作用
程序中用于保存和表示数据的占位符合
应用
使用等号向变量赋值或修改值
=为赋值符号
命名
作用
关联标识符的过程
规则
大小写字母,数字,下划线和汉字等字符及组合
注意
区分大小写
首字符不能是数字
不能与保留字相同
保留字
被编程语言内部定义并保留使用的标识符
是编程语言的基本单词,大小写敏感
and
们具有特定的含义和作用,不能作为变量名或其他对象的名字。Python3共有33个保留字,它们分别是: - and:用于逻辑运算,表示“与”关系,只有两个操作数都为真,结果才为真。 - as:用于类型转换,表示“作为”关系,可以给导入的模块或对象起一个别名。 - assert:用于断言,表示“断定”关系,可以在条件表达式为假时抛出异常。 - break:用于中断循环,表示“打破”关系,可以跳出当前循环体。 - class:用于定义类,表示“类别”关系,可以创建自定义的数据类型。 - continue:用于继续循环,表示“继续”关系,可以跳过当前循环的剩余部分,进入下一次循环。 - def:用于定义函数或方法,表示“定义”关系,可以创建自定义的功能模块。 - del:用于删除变量或对象,表示“删除”关系,可以释放内存空间。 - elif:用于条件判断,表示“否则如果”关系,可以在if语句之后添加多个分支条件。 - else:用于条件判断或循环控制,表示“否则”关系,可以在if或while语句之后添加一个默认的执行语句。 - except:用于异常处理,表示“除了”关系,可以在try语句之后捕获一个或多个异常类型。 - finally:用于异常处理,表示“最后”关系,可以在try语句之后执行一些必须的清理操作。 - for:用于遍历循环,表示“对于”关系,可以遍历一个序列或可迭代对象中的每个元素。 - from:用于导入模块,表示“从”关系,可以从一个模块中导入部分或全部内容。 - global:用于声明全局变量,表示“全局”关系,可以在函数内部访问或修改全局作用域中的变量。 - if:用于条件判断,表示“如果”关系,可以根据一个条件表达式的真假执行不同的语句。 - import:用于导入模块,表示“导入”关系,可以导入一个或多个模块到当前作用域中。 - in:用于成员测试或遍历循环,表示“在”关系,可以判断一个元素是否在一个序列或可迭代对象中。 - is:用于身份测试,表示“是”关系,可以判断两个变量是否引用同一个对象。 - lambda:用于创建匿名函数,表示“匿名”关系,可以简化函数定义的语法。 - nonlocal:用于声明非局部变量,表示“非局部”关系,可以在嵌套函数内部访问或修改外层函数作用域中的变量。 - not:用于逻辑运算,表示“非”关系,可以对一个操作数取反。 - or:用于逻辑运算,表示“或”关系,只要两个操作数中有一个为真,结果就为真。 - pass:用于占位符或空语句,表示“通过”关系,可以在需要有语句的地方占位,不执行任何操作。 - raise:用于触发异常,表示“引发”关系,可以主动抛出一个异常对象或异常类型。 - return:用于返回值或结束函数执行,表示“返回”关系,在函数内部返回一个值或None,并结束函数执行。 - try:用于异常处理或测试代码块的正确性,表示“尝试”关系,在try语句中执行可能出现异常的代码,并捕获异常进行处理。 - while:用于条件循环,表示“当”关系,可以在一个条件表达式为真时重复执行一个语句块。 - with:用于上下文管理,表示“随着”关系,可以在执行一个语句块之前和之后执行一些预定义的操作,如打开和关闭文件。 - yield:用于生成器函数,表示“产生”关系,可以返回一个值并暂停函数执行,等待下一次调用时继续执行。
数据类型
分类
整数类型
10011101
字符串类型
“10,011,101”
单双引号没区别
编号
从0开始编号
序号
使用
用[]获取字符串的一个或者多个字符
索引:返回字符串中单个字符〈字符串〉[M]
如TemStr[-1]获取TemStr的倒数第一个字符
切片:返回字符串中一段字符子串,〈字符串〉[M:N]
如TemStr[0:-1]从0开始但不到最后一个字符
列表类型
[10,011,101]
数字类型
整数
浮点数
带有小数点
列表类型
列表使用[]表示,采用逗号分隔各元素
[‘f’,‘F’]表示为两个元素F和f
使用保留字in判断一个元素是否在列表中
TempStr[-1]in[‘C’,‘c’]判断前者是否与列表中某个元素相同
True表示在 False表示不在
语句与函数
语句
赋值语句
由赋值符号构成的一行代码
赋值语句用来给变量赋予新的数据值
C=(eval(..))右侧运算结果给变量C
赋值语句右侧的数据类型同时作用于变量
TempStr=input(..)表示input()返回一个字符串,因为=TemStr也是字符串
分支语句
由判断条件决定程序运行方向的语句
类型
if
ifTempStr[-1]in[‘f’,‘F’]:#如果条件为true则执行冒号后面语句,不成立就跳过
冒号以及后续缩进用来表示后续语句与条件的所属关系
elif
else
函数
根据输入参数产生不同输出的功能过程
python程序的输入输出
输入
input()从控制台获得用户输入的函数
使用格式:〈变量〉=input(〈提示信息字符串〉)
输出
print()以字符形式向控制台输出结果的函数
使用格式:print(〈输出字符串或字符串变量〉)
print( ,end='''')
end :希望输出字符串后面增加信息
停留本行防止跳到下一行
eval()
去掉参数最外侧引号并执行余下语句的函数
因为输入的数字都是'5'这种字符串类型,去掉就是数字类型
符号
{}表示槽,后续变量填充到槽中
意味着C是输出结果,然后到槽中变成规定取值
,
起到分隔字符串
输出后形成空格
print(a,b,c)
a b c
程序设计与方法
计算机与程序设计
编译和解释
编程语言执行方式
源代码
采用某种编程语言编写的计算机程序
目标代码
计算机可直接执行
如:0100111
编程语言
静态语言
编译
使用编译执行的编程语言
优点
编译器一次性生成目标代码,优化更充分,程序运行更快
如:C/C++,java
脚本语言
解释
使用解释执行的编程语言
优点
维护更灵活
跨多个操作系统平台
如:python,javaScript,PHP
语言类型
c
学习内容
指针,内存,数据类型
语言本质
理解计算机系统结构
解决问题
性能
java
学习内容
对象,跨平台,运行时
语言本质
理解主客体关系
解决问题
跨平台
c++
学习内容
对象,多态,继承
语言本质
理解主客体关系
解决问题
大规模程序
VB
学习内容
对象,按钮,文本框
语言本质
理解交互逻辑
解决问题
桌面应用
python
学习内容
编程逻辑,第三方库
语言本质
理解问题求解
解决问题
各类计算问题实现
编程类型
机器语言
二进制语言
汇编语言
二进制直接对应助记符
与CPU型号相关
高级语言
接近自然语言
超级语言
python
程序的基本编写方法
编写方法
IPO
Input输入,程序的输入
process处理,程序的主要逻辑
output输出,程序输出
问题计算部分
计算机只解决计算问题
一个问题有多种角度理解,产生不同的计算部分
问题计算都有输入,输出,过程
解决步骤
分析问题
分析问题计算部分
划分边界
划分问题功能边界,规划IPO
设计算法
设计问题的求解算法
编写程序
编写问题的计算程序
调试测试
调试程序使正确运行
升级维护
适应问题的升级维护
计算机编程
基本图形绘制
turtle(海龟绘图体系)
定义
turtle绘图体系的python实现
标准库
python计算生态=标准库+第三方库
标准库
随解释器直接安装到操作系统中的功能模块
第三方库
需要经过安装才能使用的功能模块
原理
海龟在窗口绘图
使用turtle
绘图窗体
左上角是(0,0)
setup
设置启动窗体和大小
(width,height,startx,startx)
width窗口的宽 height窗口高 startx,startx是窗口相对于屏幕的坐标
turtle.setup(800,400,0,0)
坐标体系
角度坐标体系
seth改变方向
turtle.seth(45)海龟前进方向改变45°
空间坐标体系
函数
fd(a)前进a像素 bk(a)后退a像素 left(θ)向左方向旋转θ right(θ)同理
RGB色彩体系(red,green,blew)
取值范围
0-255整数
0-1小数
函数
colormode
切换数值使用
colormode(mode) -1.0:RGB小数值模式 -255:RGB整数值模式 (后续需要跟着变)
语法元素分析
库引用与import
库引用
作用
扩充pythin程序功能的方式
使用
import〈库名〉 〈库名〉〈函数名〉(函数参数)
优点:不会出现函数重名问题
多种库的引用
form〈库名〉import〈库名〉or*(代替库名) 〈函数名〉(〈函数参数〉)
省略了〈库名〉.
import〈库名〉as〈库别名〉 〈库别名〉.〈函数名〉
给调用外部库关联一个更短更适合自己的名字,解决重名问题
给库名自定义起一个小名,方便区分
turtle画笔控制函数
函数
penup()
别名pu
抬起画笔⇔海龟在飞行
不形成图案
pendown()
pd
画笔落下
形成图形
pensize
width
画笔宽度
pencolor
color
画笔颜色
write
直接刻出特殊符号,不需要一笔一划的绘制
turtle运动控制函数
函数
turtle.forward(d)
turtle.fd(d)
正
负
向后退
向前行进,海龟走直线
直线
曲线
circle(r,extent=None)
rn:默认圆心在海龟左侧r距离位置
extent:绘制角度,默认360°圆
根据半径r绘制extent角度的弧形
turtle方向控制函数
函数
绝对角度
默认空间坐标系
turtle.seth(angle)
改变行进方向,海龟走角度
海龟角度
海归视角下的角度
开始默认朝向x轴正方向
left(angle)向左方向旋转θ right(angle)同理
基本循环语句
循环结构
按一定次数循环执行一组语句
for〈变量〉in range(〈参数〉) 〈被循环执行的语句〉
变量:表示每次循环的计数,0到次数-1
i代表了下面被循环的语句,换成a,b,...也可以
range()函数
产生循环计数序列
range(N)产生0到N-1的整数序列
range(M,N)M到N
基本数据类型
数字类型及操作
整数类型
四种进制表示类型
十进制
二进制
以0b或0B开头:0b10
八进制
以0o或0O开头
十六进制
以0x或0X开头
浮点数类型
带有小数点及小数的数字
不确定尾数问题
二进制的0.1是不等于0.1
科学计数法
〈a〉e(E)〈b〉表示a×10ᵇ
4.3e-3→0.00433
复数类型
数值运算操作符
+-*/四则运算
//
整除,取整部分
10//3=3
%
取余数,10%3=1
x**y
开根号:10**0.5=√10
y为x的幂
y为小数,开平方
不同数字类型进行运算,取最宽
整数<浮点数<复数
数值运算函数
pow(x,y)
计算xʸ,
pow(x,y[,z])
幂余,(x**y)%z,[..]表示参数z可省略
round(x,d)
对x四舍五入,d是小数截取位数
abs(x)
绝对值
divmod(x,y)
商余,⇔(x//y,x%y)同时输出商数和余数
divmod(10,3)→(3,1)
int(x)
将x变成整数,舍弃小数部分
float(x)
将x变成浮点数,增加小数部分 float(12)结果12.0
complex(4)
将x变成复数,增加虚数部分 complex(4)结果为0+0j
相关函数
format(a,b)
是对前面a与b函数的引用,且有前后顺序
字符串类型及操作
表示方式
由一对单引号或双引号表示,仅表示单行字符串
由一对三单引号或三双引号表示,表示多行字符串
使用
使用[]获取字符串中一个或多个字符
索引
返回字符串中单个字符〈字符串〉[M]
切片
返回字符串中一段子字符〈字符串〉[M:N]
类型
缺失
M缺失→从开头开始
N缺失→到结尾结束
跳跃
[M:N:K]M到N的区间,以K为步长
0123456789[1:8:2]→1357
1表示编号1开始到编号8结束
逆序
0123456789[::-1]→9876543210
特殊字符
转义符\
表达特定字符的本意
\''→这里有个双引号,不表示字符串
组合
''\b''回退
''\n''换行
光标移动到下行首
''\r''回车
光标移动到本行首
操作符
x+y
连接两个字符串x和y
n﹡x
复制n次字符串x
x in s
如果是x是s的子串,返回True,否则返回False
判断作用
字符串处理函数
len(x)
长度,返回字符串x的长度
表示有多少个字符
len(''一二三456'')→6
str(x)
任意类型x对应的字符串形式
加上引号
str(1.23)→'1.23'
hex(x)或oct(x)
整数x的十六进制或八进制小写形式字符串
chr()
u为Unicode编码,返回其对应字符
unicode编码是python字符串编码形式
不同语言字符存在对应的字符集合
ord(x)
x为字符,返回其对应的unicode编码
字符串处理方法
方法
〈a〉.〈b〉()风格中的函数〈b〉()
方法也是函数
使用符合
要用.来执行
字符串处理功能
str.lower()或str.upper()
返回字符串的副本,全部字符小写/大写
改变大小写
''ABCDefGh''.lower()→''abcdefgh''
str.split(sep=None)
返回一个列表,有str根据sep被分隔的部分组成
''A,B,C''.split('','')→['A','B','C']
多字符串,被切割成单一字符串
str.count(sub)
返回子串sub在str中出现的次数
''an apple a day''.count(''a'')结果为4
str.replace(old,new)
返回字符串str副本,所有old子串被替换为new ''python''.replace(''n'',''n123.io''→结果为''python123.io'')
str.center(width[,fillchar])
字符串str根据宽度width居中,fillchae可选 ''python''.center(20,''='')→'====python====='
在一个20个字符中居中,其余用=填补
str.strip(chars)
从str中去掉在其左侧和右侧char中列出的字符 ''= python=''.strip('' =np'')→''ython''
strip后面指删除内容, =和n和p
str.join(iter)
在iter变量除最后元素外每个元素后增加一个st r'',''.join(''12345'')→''1,2,3,4,5''
将前面字符串分隔放置到后面join参数中
字符串类型的格式化
格式化是对字符串进行格式表达的方式,需要展示模板
展示模板由特定的格式化控制符组成
符号
〈〉.format()
槽
占位信息符
仅在字符串中有用
符合
{}
{〈参数序号〉:〈格式控制标记〉}
通过:加一个控制某一个变量在槽位置的输出格式
多个{}自动默认从0序号开始,不需要添加参数序号
第一组
''{0:=^20}''.format(''PYTHON'')
用=填充 ^→居中对齐 20→20个字符
第二组
针对数字输出形式和精度
符号
填充默认空格
b→二进制 c→unicode编码 d→十进制形式 o→八进制形式 x→十六进制 X→大写的十六进制 e→科学计数法表示 E→科学计数法 f→通常的,非科学计数法 %→用百分号表示
应用
time库的使用
作用
处理时间的标准库
表达计算机时间
提供获取系统时间并格式化输出功能
提供系统级精确计时功能,用于程序性能分析
符号使用
import time time.〈b〉()
函数类型
时间获取
time()
获取当前计算机内部时间值
不好读取
ctime()
获取当前时间并以易读方式表示,返回字符串
对人
time.ctime()→'Fri Jan 26 12:11:16 2018'
gmtime()
生成一个其他程序可以利用的一个时间格式
对计算机
时间格式化
strftime(tpl,ts)
两个参数
tpl第一个定义输出效果
ts第二个定义计算机内部时间类型的变量
t=time.gmtime() time.strftime(''%Y-%m-%d %H:%M:%S'',t)→'2018-01-26 12:55:20'
strptime(stt,tpl)
参数
tpl第一个定义输出效果
str字符串形式的时间值
程序计时
指测量起止动作所经历时间的过程
测量时间:perf_counter()
开始时间,从某一值开始→连续调用
产生时间:sleep()
控制符
格式:%+一个字母
应用
需求分析
文本进度条
采用字符串方式打印可以动态变化的文本进度条
进度条需要能在一行中逐渐变化
单行动态刷新
刷新→用后打印的字符覆盖之前的字符
输入后替换输入前
print( \r{}.format(),end='''')
end
希望输出字符串后面增加信息
停留本行防止跳到下一行
\r
光标回到首行
程序的控制结构
程序的分支结构
结构类型
顺序结构
分支结构
条件
循环结构
程序的控制结构
单分支结构
作用
判断条件结果选择不同前进路径
结构
二分支结构
作用
判断条件结果选择不同前进路径
结构
紧凑形式
多分支结构
结构
elif可以多次使用
条件判断及组合
操作符
组合
x and y
满足x和y
x or y
满足x或y
not x
非x
程序的异常处理
提示含义
使用
try: 〈语句块1〉 except〈异常类型〉: 〈语句块2〉
高级类型
BMI
两套标准
设置两种输出两 同范围合并,不同区分出来
程序的循环结构
遍历循环
结构
for 〈循环变量〉 in 〈遍历结构〉: 〈语句块〉
循环变量:记录循环次数
应用
计数循环
for i in range(N): 〈语句块〉
只有一个数(等价于(0,N))从0开始计数
如果是区间(1,5)→1,2,3,4,.
字符串遍历循环
for c in s: 〈语句块〉 s是字符串,遍历字符串每个字符,产生循环
列表遍历循环
for item in ls: 〈语句块〉 ls是一个列表,遍历每个字符,产生循环
文件遍历循环
for line in fi: 〈语句块〉 fi是一个文件标识符,遍历每行,产生循环
作用
将遍历结构内的元素打印出来
无限循环
由条件控制的循环运行方式
反复执行语句块,直到条件不满足时结束
结构
while 〈条件〉: 〈语句块〉
循环控制保留字
break
跳出并结束当前整个循环,执行循环后的语句
作用
到某一个循环,直接结束
仅能跳出当前最内层循环,外层以及有效
continue
结束当次循环,继续执行后续次数循环
仅能跳出当前最内层循环,外层以及有效
作用
跳过某个字符(跳过某个循环)
循环的高级用法
循环与else
当没有打断时,完整执行整个循环,else作为完成的奖励
random库
作用
是使用随机数的python标准库
使用
import random
函数类型
基础随机数函数
seed()
初始化给定的随机数种子,默认为当前系统时间
random.seed(10) 产生种子10对应的序列
random()
生成一个[0.0,1.0)之间的随机小数
random.random(种子(数字))
不给种子,调用第一次使用random函数所对应的系统时间
扩展随机数函数
randint(a,b)
生成一个[a,b]之间的整数
random.randint(10,100)
randrange(m,n[,k])
生成一个[m,n)之间以k为步长的随机整数
random.randrange(10,100,10)
,getrandbits(k)
生成一个k比特长的随机整数
untiform(a,b)
生成一个[a,b]之间的随机小数
choice(seq)
从序列seq中随机选择一个元素
random.choice([1,2,3,4,5,6,7,8,9])
shuffle(seq)
将序列seq中元素随机排列,返回打乱后的序列
蒙特卡洛方法
撒点
符号
\
一段特别长的代码可以用\换行,和一整行相同
函数和代码复用
函数的定义与使用
函数的理解与定义
定义
函数是一段代码的表示
是一种功能的抽象,一般函数表达特定功能
一种功能的名字叫作函数
作用
降低编程难度
代码复用
表示
def〈函数名〉(〈参数(0个或多个)〉) 〈函数体〉 return〈返回值〉
函数体:功能的语句代码 返回值:结果值
函数的使用及调用过程
函数的参数传递
设定某些参数指定默认值
def〈函数名〉(〈非可选参数〉,〈可选参数〉) 〈函数体〉 return〈返回值〉
设计不确定参数总量
def〈函数名〉(〈参数〉,*b) 〈函数体〉 return〈返回值〉
参数可以按照位置或名词方式传递
位置
从第一个开始依次带入
函数的返回值
函数可以返回0个或多个结果
局部变量和全局变量
规则
局部变量和全局变量是不同变量
局部变量是函数内部占位符,与全局变量可能重名但不同
函数运算结束后,局部变量被释放
可以使用global保留字声明函数内部为全局变量
局部变量为组合数据类型且未创建,等同于全局变量
函数里面没有定义局部变量ls,那么就默认ls为全局变量
lanlmbda函数
是一种匿名函数,即没有名字的函数
使用lambda保留字定义,函数名是返回结果
作用
定义简单能在一行内表示的函数
主要用作一些特定函数或方法的参数
参数特别复杂
使用
〈函数名〉=lambda〈参数〉:〈表达式〉
等价于
def〈函数名〉(〈参数〉): 〈函数体〉 return〈返回值〉
七段数码管绘制
基本思路
绘制单个数字对应的数码管
获得一串数字,绘制对应的数码管
获得当前系统时间,绘制对应的数码管
绘制数码管间隔
def draw Gap() turtle.penup() turtle.fd(5)
抬笔向前5个像素→产生间隔
理解思维
模块思维
确定模块接口,封装功能
规则化思维
抽象过程为规则,计算机自动执行
通过参数来进行可变控制
代码复用与函数递归
代码复用与模块化设计
代码复用
把代码当成资源进行抽象
代码资源化
程序代码是一种用来表达计算的资源
代码抽象化
使用函数等方法对代码赋予更高级别的定义
模块化
通过函数或对象封装将程序划分为模块及模块间的表达
结构化元素间划分组合
紧耦合
两个部分之间交流很多,无法独立存在
模块内部
通过局部变量,大量信息传输
松耦合
两个部分之间交流较少,可以独立存在
模块之间
减少传递参数,减少干扰
函数递归的理解
定义
特性
链条
计算过程存在递归链条
前一次运算结果对后一次运算结果有影响
逻辑链条
基例
存在一个或多个不需要再次递归的基例
直接定义,不受影响
类似于数学归纳法
函数递归的调用过程
使用
函数+分支语句
递归本身是一个函数,需要函数方式描述
函数内部,采用分支语句对输入参数进行判断
直接考虑n与n-1之间的关系
过程
字符串
字符串反转
将字符串s反转后输出
s[::-1]
-1指从后向前依次取出
::指从开始到最后
函数递归例子
1:A->B
将1号从A搬到B
PyInstaller库使用
将.py源代码转换成无需源代码的可执行文件
.py→PyInstaller→可执行文件
常用参数
-h
查看帮助
--clean
清理打包过程中的临时文件
-D,--onedir
默认值,生成dist文件夹
-F,--onefile
在dist文件夹中只生成独立的打包文件
首选
-i〈图标文件名.ico〉
指定打包程序使用的图标(icon)文件
使用
改文件图标
打包后的文件,可以直接执行
组合数据类型
目的
更好处理一组数据
类型结构
集合类型
定义
与数学集合定义相同
唯一性
集合元素不可变
无序性
得到的乱拍
使用
{}或set{}(空集必用),元素逗号间隔
{}为逗号间隔的一组元素
set{}一组元素拆分成单个元素
集合操作符
交集,并集,补集,
交(﹠),并(|),差(-),补(^),比较(>=<)
集合处理方法
pop→取出一个元素给用户,并再集合中删除这个元素
应用场景
数据去重
让数据集合没有重复元素
转换成集合,利用集合唯一性
包含关系的比较
序列类型
定义
类似于数列
有序性
通用操作符
x in s 如果x是序列s的元素,返回True,否则返回False x not in s 如果x是序列s的元素,返回False,否则返回True s+t 连接两个序列s和t s*n或n*s 将序列s复制n次 s[i] 索引,返回s中的第i个元素,i是序列的序号 s[i:j] 或 s[i:j:k] 切片,返回序列s中第i到j以k为步长的元素子序列
通用函数和方法
lenl(s)
返回序列s的长度
minl(s)
返回序列s的量小元素,s元素需重可比j比较
max(s)
返回序列s的最大元素,s中元素要可比j比较
s.index(x)或 s.index(x,i,j)
退回序列s从开始到位置中情一次出现x元素的位置
s.count(x)
返回序列s中出现的总次数
类型
元组类型
特点
一旦创建不能被修改
使用
()
tuple()
元素用逗号分隔
列表类型
特点
可以被任意修改
使用
[]
list[]
逗号间隔
操作函数
应用
字典类型
定义
映射是属性(键)与数据(值)的对应关系
属性:数据 (属性→数据)
使用
{}
dict{}
映射用:表示
用type(x)检测变量x的类型
操作函数和方法
del d[k]
删除字典d中键k对应的数据值
k in d
判断键k是否在字典d中,如果在返回True,否则False
d[key]
对元素的值进行索引或者赋值
.get()
从字典中获得某一个键对应的值
.get(word,0)
从文本中提取word单词,没有则赋值为0
d.keys()
返回字典d中所有的键信息
d.values()
返回字典d中所有的值信息
d.items()
返回字典d中所有的键值对信息
应用
应用
.sort()
默认排序从小到大,(,reverse=True)从大到小
.sort(key=lambda x:x[1],reverse=True)对两个键值对的第二个元素进行排序
sort()与lambda函数的结合
jieba库
定义
中文分词第三方库
作用
对中文数据处理
模式类型
精确模式
把一段文本切成若干单词,并分开,不改变文本
全模式
把文本中所有可能的词语提前,存在与原文无关的词语
搜索引擎模式
在精确模式基础上,对长词语再次切分为短词语,更方便搜索
常用函数
应用
对具体要求精确的统计
excludes={}
在排序中,排除无关要求的,不断进行循环,最终得到符号具体要求的排名
合并同一元素不同称呼
文件和数据格式化
格式化
字符串格式化
将字符串按照一定的顺序
数据格式化
对一组数据按照一定的顺序
文件的使用
文件定义
数据储存的一种形式
数据的抽象和集合
文件类型
展现形式
文本文件
由单一特定编码组成的文件,储存长字符串
人来理解
例如:txt文件,py文件
二进制文件
直接由比特0和1组成,没有统一编码
计算机理解储存
例如:图片
文件的打开和关闭
处理步骤:打开→操作→关闭
a=open(〈文件名〉,〈打开模式〉)
文件的储存状态→文件的占用状态
文件名:文件路径和名称
\在python代表转义符→\\or/代替
绝对路径
需要鼠标一层层打开的路径
相对路径
可执行程序中可省略一定路径
都是为了找到文件
打开模式:文本(读)or二进制(写)
‘r’只读
‘w’写文件并覆盖原来,没有就覆盖原来空白
‘x’创建新的,如果存在不能写
‘a’在最后补充内容模式
‘b’二进制模式打开
‘t’文本文件模式打开
‘+’与r/w/x/a一同使用,在原先功能基础上增加功能
例子
a.close()
文件的占用状态→文件的储存状态
〈变量名〉.close()
程序退出也会自动关闭
防止意外改动
文件内容的读取
read,出入长度读取对应长度信息 readline,读取一行 .readlines,选取第几行开始
操作模式
遍历全文本
一次读入,统一处理
只适合小文本处理
按数量读入,分批处理
几个字符逐一处理
逐行遍历,处理
一次性,所有行处理
分行处理
fo是文件句柄
数据的文件写入
.write,写入字符串
writelines,将全为字符串的列表写入文件,拼接后写入同一行
seek,控制指针位置
例子
分析
如果不调节指针位置,那么指针位于最末,而用for in遍历,导致打印出指针后面的内容→空白输出
自动轨迹绘制
基本思路
定义数据文件格式(接口)
定义数据含义,建立桥梁
编写程序,根据文件接口解析参数绘制图形
编制数据文件
思维
自动化思维
数据与功能分量,用数据驱动自动运行
函数
map(a,b)函数→将第一个参数a的功能作用于第二个参数b的每个元素
b要是一个集合或者列表,让其中每一个元素都得到作用
一维数据的格式化和处理
数据组织的维度
一组数据在多个不同数据组之间的对应,而不同数据组就是维度
一维数据的表示
线性数据
列表(有序),集合(无序)...
一维数据的储存
空格分隔
缺点:数据不能存在空格
逗号分隔
同
其他方式
用特殊符号分隔,避免数据中存在
一维数据的处理
读入处理
例子
写入处理
方法
.split()
.join()
二维数据的格式化和处理
表示
列表中蕴含两个列表
CSV格式与二维数据的存储
CSV数据储存格式
CSV:vomma-separated values逗号分割值
.CSV
特点
元素缺失,仍要用逗号保留
索引
ls[row][column]先行后列
处理
二层循环
wordcloud库
使用方法
generate(txt)→将文本输出的文本中,才可看到词云效果 to_file(filename)→将词云输出成图片
绘制词云步骤
1. 步骤
1. 配置对象参数
1.1. 长宽
1.2. 修改字号
1.3. 指定字体文件
1.4. 显示单词数量
1.5. 指定排除单词显示
1.6. 词云形状和颜色
2. 加载词云文本
3. 输出词云文件
2.
作用
分隔:空格显示为分隔单词代表不同单词
统计:统计单词出现次数并过滤1-2个字母频率低的单词
字体:根据统计次数配置不同字号
布局:颜色环境尺寸
效果
找出核心关键词
应用
中文
英文
文本
程序设计方法
体育竞技
输入
运行
输出
解决问题方法
自顶向下
作用
解决复杂问题
将一个总问他表达为若干个小问题组成的形式
直至问题变成若干个明确,易解决的小问题
类似于逆推结构化解题
自底向上
组建复杂系统
将测试的模块测试和与其他模块进行组装在测试
类似于出题
人类思维
逻辑思维
推理和演绎,数学代表
实证思维
实验和验证,物理代表
计算思维
设计和构造(模块封装组合),计算机代表
程序设计思维
计算思维与程序设计
计算思维
设计和构造,计算机代表
抽象问题计算过程,利用计算机自动运算,不断递归
靠算力
设计和构造
计算生态与python语言
利用
提高用户体验
进度展示
异常处理
程序设计模式
IPO基础设计
自顶向下
模块封装
模块化设计
应用开发四个步骤
产品定义
对应用需求明确定义
功能与商业模式考虑
系统架构
系统方式思考产品的技术实现
系统架构
数据流
如何形成,是不是有效的,高效的
模块化
怎么划分的,是不是合理的
体系架构
是不是冗余的
设计与实现
结合系统架构完成关键设计和系统实现
设计的扩展性、灵活的
用户体验
从用户角度思考效果
python库安装
方法
使用pip命令
系统自带的命令行
D:\>pip install 〈第三方库名〉
D:\>pip list
列出以安装的
D:\>pip search 〈关键词〉
根据关键词搜索相关第三方库(名称和介绍信息中)
D:\>pip show 〈第三方库名〉
列出第三方库详细信息,介绍和使用方法
D:\>pip download 〈第三方库名〉
仅下载不按照
D:\>pip uninstall 〈第三方库名〉
卸载
pip install -U〈第三方库名〉
对以安装进行更新
集成安装一批
Anaconda
http://www.continuum.io
特征:数据分析和展示
文件安装特殊第三方库
有些是源代码,需要编译再安装
UCI页面
windows能编译
http://www.lfd.uci.edu/~gohlke/pythonlibs/
os库
定义
python的标准库
路径操作
库名
os.path
os.path as op
函数
basename→找到文件目录和名称 join→得到路径名称
exists判断输入存在
与时间相关
得到文件大小
进程管理
os.system
执行调用其他程序和命令
环境参数
改变或获取操作系统中的环境信息
相关函数
chdir→修改路径
get→返回当前路径
getlogin→用户名 cup_count→cup数量
urandom→加解密运算
实例
第三方库自动安装脚本
计算机生态
优质第三方库
http://python123.io
python社区
http://pypi.org/
任何主题python第三方库
计算生态概览
从数据处理到人工智能
逻辑链条
数据表示:采用合适方式用程序表达数据
数据清洗:数据归一化、数据转换、异常值处理
数据统计:数据的概要理解,数量、分布、中位数
数据可视化:直观展示数据内涵的方式
数据挖掘:从数据分析获得知识,产生数据外的价值
人工智能:数据/语言/图像/视觉等方面深度分析与决策
python库之数据分析
Numpy库
表达n维数组
对内c语言实现,对外python接口
作用
提供矩阵运算、广播函数、线性代数等
减少for循环使用,进行直接运算,简洁
Pandas库
作用
提供了简单易用的数据结构和数据分析工具 ﹣理解数据类型与索引的关系,操作索引即操作数据 -Python最主要的数据分析功能库,基于Numpy开发
文本处理
PyPDF2
用来处理pd文件的工具集
提供了一批处理PDF文件的计算功能 -支持获取信息、分隔/整合文件、加密解解密等 -完全Python语言实现,不需要额外依依赖,功能稳
http://mstamy2.github.io/PyPDF2
NLTK
自然语言文本处理第三方库
﹣提供了一批简单易用的自然语言文本处理功能 ﹣支持语言文本分类、标记、语法句法、语义分析等 ﹣最优秀的Python自然语言处理库
http://www.nltk.org/
Python-docx
创建或更新Microsoft Word文件的第三方库
提供创建或更新.doc.docx等文件的计算功能 ﹣增加并配置段落、图片、表格、文字等,功能全面
http://python-docx.readthedocs.io/en/latest/index.html
机器学习
Scikit-learn
机器学习方法工具集
﹣提供一批统一化的机器学习方法功能接口 ﹣提供聚类、分类、回归、强化学习等计算功能 ﹣机器学习最基本且最优秀的Python第三方库
TensorFlow
AlphaGo背后的机器学习计算框架
﹣谷歌公司推动的开源机器学习框架 ﹣将数据流图作为基础,图节点代表运算,边代表张量 ﹣应用机器学习方法的一种方式,支撑谷歌人工智能应用
https://www.tensorflow.org/
MXNet
基于神经网络的深度学习计算框架
﹣提供可扩展的神经网络及深度学习计算功能 ﹣可用于自动驾驶、机器翻译、语音识别等众多领域 -Python最重要的深度学习计算框架
https://mxnet.incubator.apache.org/
霍兰德人格分析雷达图实例
目标感→思考解决→熟练
web解析到网络空间
网络爬虫
将web页面内容提取下来
Requests
最友好的网络爬虫功能库
提供了简单易用的类HTTP协议网络爬虫功能 ﹣支持连接池、SSL、Cookies、HTTP(S)代理等 -Python最主要的页面级网络爬虫功能库
http://www.python-requests.org/
Scrapy
优秀的网络爬虫框架
﹣提供了构建网络爬虫系统的框架功能,功能半成品 ﹣支持批量和定时网页爬取、提供数据处理流程等 -Python最主要且最专业的网络爬虫框架
https://scrapy.org
pyspider
强大的Web页面爬取系统
﹣提供了完整的网页爬取系统构建功能 ﹣支持数据库后端、消息队列、优先级、分布式架构等 -Python重要的网络爬虫类第三方库
http://docs.pyspider.org
web信息提取
Beautiful Soup
HTML和XML的解析库
?这两个的原理
﹣提供了解析HTML和XML等Web信息的功能 ﹣又名beautifulsoup4或bs4,可以加载多种解析引擎 ﹣常与网络爬虫库搭配使用,如Scrapy、requests等
https://www.crummy.com/software/BeautifulSoup/bs4
Re
正则表达式解析和处理功能库
﹣提供了定义和解析正则表达式的一批通用功能 ﹣可用于各类场景,包括定点的Web信息提取 -Python最主要的标准库之一,无需安装
https://docs.python.org/3.6/library/re.html
Python-Goose
提取文章类型Web页面的功能库
﹣提供了对Web页面中文章信息/视频等元数据的提取功能 ﹣针对特定类型Web页面,应用覆盖面较广
https://github.com/grangier/python-goose
web网站开发
Django
最流行的Web应用框架
﹣提供了构建Web系统的基本应用框架 -MTV模式:模型(model)、模板(Template)、视图(Views) -Python最重要的Web应用框架,略微复杂的应用框架
https://www.djangoproject.com
Pyramid
规模适中的Web应用框架
﹣提供了简单方便构建Web系统的应用框架 ﹣不大不小,规模适中,适合快速构建并适度扩展类应用 -Python产品级Web应用框架,起步简单可扩展性好
https://trypyramid.com/
Flask
Web应用开发微框架
﹣提供了最简单构建Web系统的应用框架 ﹣特点是:简单、规模小、快速
http://flask.pocoo.org
网络应用开发
WeRoBot
微信公众号开发框架
﹣提供了解析微信服务器消息及反馈消息的功能 ﹣建立微信机器人的重要技术手段
https://github.com/offu/WeRoBot
aip
百度AI开放平台接口
﹣提供了访问百度AI服务的Python功能接口 ﹣语音、人脸、OCR、NLP、知识图谱、图像搜索等领域 -Python百度AI应用的最主要方式
https://github.com/Baidu-AIP/python-sdk
MyQR
二维码生成第三方库
﹣提供了生成二维码的系列功能 ﹣基本二维码、艺术二维码和动态二维码
https://github.com/sylnsfar/qrcode
人机交互到艺术设计
图形用户界面
PyQt5
Qt开发框架的Python接口
﹣提供了创建Qt5程序的Python API接口 -Qt是非常成熟的跨平台桌面应用开发系统,完备GUI ﹣推荐的Python GUI开发第三方库
https://www.riverbankcomputing.com/software/pyqt
wxPython
跨平台GUI开发框架
﹣提供了专用于Python的跨平台GUI开发框架 ﹣理解数据类型与索引的关系,操作索引即操作数据 -Python最主要的数据分析功能库,基于Numpy开发
https://www.wxpython.org
PyGObject
使用GTK+开发GUI的功能库
﹣提供了整合GTK+、WebKitGTK+等库的功能- GTK+:跨平台的一种用户图形界面GUI框架
https://pygobject.readthedocs.io
游戏开发
PyGame
简单的游戏开发功能库
﹣提供了基于SDL的简单游戏开发功能及实现引擎﹣理解游戏对外部输入的响应机制及角色构建和交互机制-Python游戏入门最主要的第三方库
http://www.pygame.org
Panda3D
开源、跨平台的3D渲染和游戏开发库
﹣一个3D游戏引擎,提供Python和C++两种接口﹣支持很多先进特性:法线贴图、光泽贴图、卡通渲染等
http://www.panda3d.org
cocos2d
构建2D游戏和图形界面交互式应用的框架
提供了基于OpenGL的游戏开发图形渲染功能﹣支持GPU加速,采用树形结构分层管理游戏对象类型﹣适用于2D专业级游戏开发
http://python.cocos2d.org/
虚拟现实
VR Zero
在树莓派上开发VR应用的Python库
﹣提供大量与VR开发相关的功能 ﹣针对树莓派的VR开发库,支持设备小型化,配置简单化﹣非常适合初学者实践VR开发及应用
https://github.com/WayneKeenan/python-vrzero
pyovr
Oculus Rift的Python开发接口
﹣针对Oculus VR设备的Python开发库 ﹣基于成熟的VR设备,提供全套文档,工业级应用设备-Python+虚拟现实领域探索的一种思路
https://github.com/cmbruns/pyovr
Vizard
基于Python的通用VR开发引擎
﹣专业的企业级虚拟现实开发引擎 ﹣提供详细的官方文档 ﹣支持多种主流的VR硬件设备,具有一定通用性
http://www.worldviz.com/vizard-virtual-reality-software
图形艺术
Quads
图片像素化
﹣对图片进行四分迭代,形成像素风 ﹣可以生成动图或静图图像 ﹣简单易用,具有很高展示度
https://github.com/fogleman/Quads
ascii_art
ASCII艺术库(黑白画)
﹣将普通图片转为ASCII艺术风格﹣输出可以是纯文本或彩色文本﹣可采用图片格式输出
https://github.com/jontonsoup4/ascii_art
turtle海龟