Python-初步认识 第一周 计算及与程序设计 概念:计算及是根据指令操作数据的设备,具有功能性和可编程性。 发展:参照摩尔定律(Moore’s Law),表现为指数方式。 程序设计:计算及可编程性的体现。 程序设计语言:一种用于交互的人造语言。 编程语言的执行方式:编译和解释。 编译:将源代码一次性转换成目标代码的过程。 解释:将源代码逐条转换成目标代码同时逐条运行的过程。 静态语言:使用编译执行的编程语言,如C、C++、Java 脚本语言:使用解释执行的编程语言,如Python,JavaScript,PHP 程序的基本编写方法(IPO):Input输入 Process处理 Output输出
Python介绍 Python 译为蟒蛇,拥有者Python Software Foundation(PSF) PSF是非盈利组织,致力于保护Python语言开发,开源和发展 Python语言创立者:Gudio van Rossum Guido van Rossum正式对外发布Python版本的年份是:1991 2002年,Python 2.x 2008年,Python 3.x 官方环境:Python解释器+IDLE开发环境 高级环境:VS code 或 pycharm 编程方式:交互式和文件式
缩进、注释 缩进表达程序的格式框架,Python语言的缩进只要统一即可,不一定是4个空格(尽管这是惯例)。 注释用户提高代码可读性的辅助性文字,不被执行
命名与保留字 变量:程序中用于保存和表示数据的占位符号 命名规则:大小写字母、数字、下划线和中文等字符的组合 注意事项:大小写敏感,首字符不能是数字 保留字:被编程语言内部定义并保留使用的标识符 Python有35个保留字(关键字)
1 2 3 4 5 6 7 and,elif,import,raise,global, as,else,in,return,nonlocal, assert,except,is,try,True, break,finally,lambda,while,False, class,for,not,with,None, continue,from,or,yield,async, def,if,pass,del,await
数据类型 数据类型:字符串,整数,浮点型,列表 字符串:由0个或多个字符组成的有序字符序列,一对单引号或双引号表示 字符串有正向递增和反向递减两套序号体系 字符串序号:正向递增序列:0,1,2…. ,反向序列 … ,-2,-1 使用[]获取字符串中的一个或多个字符 索引:返回字符串中的单个字符 [index]
切片:返回字符串中一段字符子串 [M:N]
数字类型:整数和浮点数 列表类型:由0个或多个数据组成的有序序列,用[]表示,逗号隔开 ['A','B']
使用保留字in判断一个元素是否在列表中 'a' in ['a','b']
语句与函数 赋值语句:由赋值符号’=’构成的一行代码 分支语句:由判断条件决定程序运行方向的语句,使用保留字if,elif,else和末尾加冒号’:’构成条件语句分支结构 函数:根据输入参数产生不同输出的功能过程
输入输出 input():从控制台获得用户输入的函数,可在括号中添加提示信息 print():以字符形式向控制台输出结果的函数,输出参数,以及格式化
eval() 评估函数 eval(x)函数:去掉参数最外层引号并执行余下语句的函数
Python-进一步认识 turtle库使用 第二周 turtle常识 turtle:图形绘制函数库、标准库 turtle坐标系的原点默认在窗体正中间 turtle库最早成功应用于LOGO编程语言 turtle绘图体系以水平右侧为绝对方位的0度
画笔属性 1 2 3 4 5 6 7 turtle.setup(width, height, startx, starty) # 修改画布大小和起始点,默认为正中心 turtle.penup() / turule.pu() / turule.up() # 抬起画笔,之后移动画笔不绘制形状 turtle.pendown() / turtle.pd() / turtle.down() # 落下画笔,之后移动画笔将绘制形状 turtle.pensize(width) / turtle.width(width) # 修改画笔尺寸 turtle.done() # 用来停止画笔绘制,但绘图窗体不关闭 turtle.hideturtle() # 隐藏箭头显示 turtle.showturtle() # 开启箭头显示
画笔绘制属性 1 2 3 4 5 6 7 turtle.goto() # 跳到指定坐标,直线跳转会留下两点直线痕迹 turtle.speed(v) # 画笔速度 turtle.fd(distance) / turtle.forward(distance) # 向前进,控制画笔直线前进长度 turtle.bk(distance) # 向后退,只能后退,但不改变方向,"后退"不是"转向"。 turtle.shape(x) # 画笔的形状 turtle.circle(radiuse, extent=None, setps=None) # 控制画笔曲线(圆弧)前进长度 radiuss:半径 extent:圆弧角度,默认360度 setps:内切正多边形边数
画笔角度属性 1 2 3 turtle.seth(to_angle) / turtle.setheading(to_angle) # 修改前进角度 turtle.right(angle) # 向左转角度 turtle.left(angle) # 向右转角度
画笔颜色 1 2 3 4 5 6 7 8 9 10 11 turtle.colormode(mode) # 修改画笔颜色模式 # -1.0:RGB小数值模式 # -255:RGB整数值模式 turtle.pencolor(color) # 修改画笔颜色 # color:字符串,RDB小数值或源组值 turtle.fillcolor(color) # 填充颜色 turtle.color(color1,color2) # 同时设置pencolor=color1,fillcolor=color2 turtle.begin_fill() # 开始填充 turtle.end_fill() # 结束填充
全局属性 1 2 3 4 5 6 turtle.clear() # 清除turtle窗口,turtle位置和状态不改变 turtle.reset() # 清空窗口,重置turtle状态为起始状态 turtle.undo() # 撤销上一个turtle动作 turtle.isvisible() # 返回当前turtle是否可见 stamp() # 复制当前图形 turtle.write(s[,font=("font-name","font_size","font_type")]) # 添加文字,以及设置文字的风格
import 库引用 三种引用外部库的方法:
1 2 3 4 5 6 7 8 9 10 11 12 # 1 正常引用库 import <name> <name>.<function>(value) # 2 引用库中的模块 *为所有模块 from <name> import <name1,name2> from <name> import * <function>(value) # 3 引用库并取别名 import <name> as <myname> <myname>.<function>(value)
range()函数 产生循环计算序列
1 2 range(N) # 0->N-1 range(N,M) # N->M-1
def自定义函数 Python-基本数据类型 第三周 整数 -十进制 -二进制 0b 0B -八进制 0o 0O -十六进制 0x 0X
浮点数
复数
操作符 1 2 + - * / //(整除) % **(幂次方) 二元操作符 x op=y
数值运算函数 1 2 3 4 5 6 7 8 9 10 11 abs(x) # 绝对值 divmod(x,y) # 商余 =(x//y,x%y) divmod(10,3) # = (3,1) pow(x,y[,z]) # 幂余 =>(x**y)%z pow(3,pow(3,99),10000) # =4587 round(x,d) # 对x四舍五入,d小数截取位数 max(x1,x2,..,xn) # 返回最大值 min(x1,x2,..,xn) # 返回最小值 int(x) # 返回整数部分,舍去小数部分 float(x) # 将x变为浮点数,增加小数部分 complex(X) # 将x变成复数,增加虚数部分 x+0j
字符串 1 2 3 4 5 6 7 单行字符串 '' "" 多行字符串 """ """ ''' ''' 字符串序号:正向递增序列:0,1,2.... ,反向序列 ... ,-2,-1 索引:返回字符串中的单个字符 str[M] 切片:返回字符串中一段字符子串 str[M:N] ,mn省略为从开头或到结尾 [M:N:K] k为跳跃步长切片 -1逆序输出 转义符 \
1 2 3 4 5 6 7 8 \a # 蜂鸣,响铃 \b # 回退一格 \f # 换页 \n # 换行 \r # 回车 \t # 水平制表 \v # 垂直制表 \0 # NULL,什么都不做
字符串操作符 1 2 3 a + b # 连接两个字符串 s * n # 复制n次s字符串 x in s # s是否包含子串x
字符串处理函数 1 2 3 4 5 6 len(x) 返回字符串x的长度 str(x) 转换x对应的字符串形式 hex(x) 将整数x的十六进制转成十六进制的字符串形势 0x111 oct(x) 将整数x的八进制转成八进制的字符串形势 0o111 chr(x) 将x的Unicode编码变为单字符 ord(x) 将x的单字符变为Unicode编码
字符串处理方法 1 2 3 4 5 6 7 8 str.lower() # 将字符串全部转为小写 str.upper() # 将字符串全部转为大写 str.jion(iter) # 将字符串中每个元素后添加一个iter,可做分隔 str.count(sub) # 计算str中出现子串sub的次数 str.split(sep=None) # 分隔形成一个列表 sep为分隔符 str.replace(old,new) # 将字符串str中的old子串全部替换成new子串 str.strip(chars) # 去掉头尾的的chars字符 str.center(width[,fillchar]) # 居中显示 填充
字符串高级方法 字符转换:str.translate(table)
-根据table表对str进行转换 -table – 翻译表,翻译表是通过maketrans方法转换而来。
str.maketrans(intab, outtab [, deletechars])
-创建字符映射的转换表 -intab – 字符串中要替代的字符组成的字符串。 -outtab – 相应的映射字符的字符串 -deletechars – 字符串中要过滤的字符列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 intab = 'abcde' # 原字符表 outtab = '12345' # 对照字符表 deltab = "is" # 过滤字符表 trantab = str.maketrans(intab, outtab) # 字符转换表 trantab2 = str.maketrans(intab, outtab, deltab) # 字符转换表 s = "this is translate and maketrans." # 原字符串 t_s = s.translate(trantab) # 转换字符串无过滤 t1_s = s.translate(trantab2) # 转换字符串有过滤 print(s) # 原字符串: this is translate and maketrans. print(t_s) # 转换字符串: this is tr1nsl1t5 1n4 m1k5tr1ns. print(t1_s) # 转换过滤字符串: th tr1nl1t5 1n4 m1k5tr1n.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # Caesar crypto import string str = input() # Beautiful is better than ugly.Explicit is better than implicit. number = int(input()) # 3 def Caesar(str, number): lower = string.ascii_lowercase #小写字母 upper = string.ascii_uppercase #大写字母 before = string.ascii_letters after = lower[number:] + lower[:number] + upper[number:] + upper[:number] table = ''.maketrans(before, after) return str.translate(table) print(Caesar(str, number)) # Ehdxwlixo lv ehwwhu wkdq xjob.Hasolflw lv ehwwhu wkdq lpsolflw.
字符串格式化 1 2 3 4 5 6 7 8 9 <str>.format() 槽{} 格式控制 引导符号 冒号(:) 填充、对齐、宽度 ps:左< 右> 居中对齐^ `{0:*>10}.format("BIT") # *******BIT` 千位分隔符(,)、精度(.)、类型(整数类型:b,c,d,o,x,X 浮点数类型:e,E,f,%) `{0:,.2f}.format(12345.6789) # 12,345.68`
time库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # time库使用 time.<b> # 时间获取:time() ctime() gmtime() time.time() # 返回时间戳 time.ctime() # 返回字符串可读形式 time.gmtime() # 返回当前时间,计算及可处理时间格式 # 时间格式化 strftime(tp1,ts) # tp1:格式化模式 ts:时间 -%Y 年 -%m 月 -%d 日 -%H 时 -%M 分 -%S 秒 -%B 月份 -%b 月份缩写 -%A 星期 -%a 星期缩写 -%I 12小时 -%p 上下午(AM,PM) strptime(str,tpl) # 将字符串转换为时间 # 程序计时 clock() # 返回调用时间,py3.8被遗弃 建议使用perf_counter() perf_counter() # 返回调用的时间值 sleep(s) # 休眠时间
Python-程序的控制结构 第四周 程序三种基本结构:顺序结构,循环结构,分支结构
分支结构 单分支结构
二分支结构 1 2 3 4 5 6 7 if <条件>: <语句块1> else: <语句块2> # 紧凑形式 <表达式1> if <条件> else <表达式2>
多分支结构 1 2 3 4 5 6 if <条件1>: <语句块1> elif <条件2>: <语句块2> else: <语句块3>
条件判断和组合 判断:操作符 组合:and、or、not
异常处理 1 2 3 4 5 6 7 8 try: <语句块1> except: # except NameError: 异常类型 <语句块2> # 异常执行 else: <语句块3> # 无异常执行 finally: <语句块4> # 始终执行
循环结构 遍历循环 1 2 for <循环变量> in <遍历结构>: <语句块>
无限循环
保留字 break:跳出并结束当前整个循环,执行循环后的语句 continue:结束当次循环,继续执行后续次数循环 break和continue可以与for和while循环搭配使用
循环扩展 for/while+else:不用break退出时执行else语句
random库 random:随机数、标准库、伪随机、蒙特卡罗法
1 2 3 4 5 6 7 8 9 10 11 12 # 基本: random.seed(x) # x为初始化随机数种子,可以省略 random.random() # 生成一个[0,1.0)之间的一个随机小数 # 扩展: random,randint(a,b) # 生成一个[a,b]之间整数 random.randrange(m,n[,k]) # 生成一个[m,n)之间以K为步长的随机整数 random.getrandbits(k) # 生成一个k比特长的随机整数 random.uniform(a,b) # 生成一个[a,b]之间的随机小数 random.choise(seq) # 从序列seq中随机选取一个元素 random.shuffle(seq) # 将seq序列中的元素随机排列,返回该序列 random.sample(pop,k) # 从pop类型中随机选取k个元素,返回该列表
Python-函数和代码复用 第五周 函数概念 函数是一段代码的表示
函数是一段具有特定功能的、可重用的语句组
函数是一种功能的抽象,一般函数表达特定功能
两个作用:降低编程难度 和 代码复用
增强代码可读性、函数不能直接提高代码执行速度。
函数定义 def 1 2 3 4 5 6 7 8 9 10 11 12 13 def <函数名>(参数列表): <函数体> return <返回值列表> # 可选参数 def <函数名>(<非可选参数>,<可选参数=Value>): <函数体> return <返回值列表> # 可变参数传递 def <函数名>(<参数>, *b ) : <函数体> return <返回值>
lambda 函数 匿名函数 1 2 # 等价于def自定义函数 <函数名>=lambda <参数列表>:<表达式>
函数与变量 全局变量、局部变量、返回值、参数:实参、形参 全局变量:函数体外的变量或这函数体内用global声明的变量 局部变量:函数体内的变量
代码复用和模块化设计 代码复用 把代码当成资源进行抽象
代码资源化:程序代码是一种用来表达计算的”资源”
代码抽象化:使用函数等方法对代码赋予更高级别的定义
代码复用:同一份代码在需要时可以被重复使用
函数 和 对象 是代码复用的两种主要形式 函数:将代码命名在代码层面建立了初步抽象 对象:属性和方法<a>.<b> 和 <a>.<b>()
在函数之上再次组织进行抽象
模块化设计 分而治之
通过函数或对象封装将程序划分为模块及模块间的表达
具体包括:主程序、子程序和子程序间关系
分而治之:一种分而治之、分层抽象、体系化的设计思想 紧耦合 松耦合
紧耦合:两个部分之间交流很多,无法独立存在
松耦合:两个部分之间交流较少,可以独立存在
模块内部紧耦合、模块之间松耦合
递归 函数定义中调用函数自身的方式 递归中两个关键特征
链条:计算过程存在递归链条
基例:存在一个或多个不需要再次递归的基例
递归不提高程序执行效率。 任何递归程序都可以通过堆栈或队列变成非递归程序(这是程序的高级应用)。
递归是数学归纳法思维的编程体现 常见递归:字符串反转、斐波那契数列、汉诺塔 常见分型图像:科赫雪花、康托尔集、谢尔宾斯基三角形、门格海绵、龙形曲线、空间填充曲线
datetime库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 # 常量 datetime.MINYEAR # 最小年份 datetime.MAXYEAR # 最大年份 # 常用 datetime.date # 日期表示类,年月日 datetime.time # 时间表示类,时分秒毫秒 datetime.datetime # 日期+时间 datetime.timedelta # 与时间间隔有关的类 datetime.tzinfo # 与时区有关的信息表示类 datetime.now() # 获得当前日期和时间对象 datetime.utcnow() # 获得当前日期和时间对应的UTC时间对象 # 属性: .min # 固定返回datetime的最小时间对象,datetime(1,1,1,0,0) .max # 固定返回datetime的最大时间对象,datetime(9999,12,31,59,59,999999) .year .month .day # 年月日 .hour .minute .second # 时分秒 .microsecond # 毫秒 # 格式化方法 .isoformat() # 采用ISO 8601 标准显示时间 .isoweekday() # 返回星期几的值 .strftime(format) # 格式化字符串时间 # 格式化控制符 %Y %m %d # 数字年月日 %H %S %M # 数字时分秒 %X # 数字月日年 %x # 数字时分秒 %B %b # 月名单词/月名单词缩写 %A %a # 星期/星期缩写
Python内置函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 # 68个内置函数 abs() id() round() complie() locals() all() input() set() dir() map() any() int() sorted() exec() memoryview() asci() len() str() enumerate() next() bin() list() tuple() filter() object() bool() max() type() format() property() chr() min() zip() frozenset() repr() complex() oct() getattr() setattr() dict() open() globals() slice() divmod() ord() bytes() hasattr() staticmethod() eval() pow() delattr() help() sum() float() print() bytearray() isinstance() super() hash() range() callble() issubclass() vars() hex() reversed() classmethod() iter() __import()__ all():一般针对组合数据类型,所有元素都为True,返回True,否则返回False,0、空字符串、空列表[]被当成False any():与all()相反,只要有一个元素为True,返回True,否则返回False hash():对能够计算哈希的类型返回哈希值 id():对每个数据返回唯一编号 reversed():返回逆序后的组合类型 sorted():对一个序列进行排序,默认从小到大 type():返回对应数据的类型
map()+input()
1 2 3 4 5 6 7 8 9 10 11 map() 会根据提供的函数对指定序列做映射。 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。 语法 map() 函数语法: map(function, iterable, ...) 参数 function -- 函数,有两个参数 iterable -- 一个或多个序列 # 将多个输入的数据进行转换 nums = list(map(int, input().split()))
PyInstaller库 官网:http://www.pyinstaller.org/ PyInstaller:第三方库、将.py源代码转换成无需源代码的可执行文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 # 安装 pip install pyinstaller # 使用 pyinstaller -F <file_name.py> pyinstaller -F text.py # 参数 -h, --help 查看帮助 -v, --version 查看pyinstaller版本 --clean 清理打包过程中的临时文件 -D,--onedir 默认值,生成dist文件夹 -F,--onefile 在dist文件夹中只生成独立的打包文件 -i <icon_name.ico> 指定打包程序使用的图标文件ico -p DIR, --paths DIR 添加Python文件使用的第三方库路径 # ps: pyinstaller –i curve.ico –F SevenDigitsDrawV2.py
Python-组合数据类型 第六周 组合数据类型:序列、集合、映射 序列:字符串(str)、元组(tuple)、列表(list) 集合:集合(set) 映射:字典(map)
集合 构成:无重复、无顺序的多个元素组合 创建集合:{}或set(),空集合只能用set() 集合类型主要应用于:包含关系比较、数据去重
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # 操作符 S | T 并,返回一个新集合,包括在集合S和T中的所有元素 S - T 差,返回一个新集合,包括在集合S但不在T中的元素 S & T 交,返回一个新集合,包括同时在集合S和T中的元素 S ^ T 补,返回一个新集合,包括集合S和T中的非相同元素 S <= T 或 S < T 返回True/False,判断S和T的子集关系 S >= T 或 S > T 返回True/False,判断S和T的包含关系 S |= T 并,更新集合S,包括在集合S和T中的所有元素 S -= T 差,更新集合S,包括在集合S但不在T中的元素 S &= T 交,更新集合S,包括同时在集合S和T中的元素 S ^= T 补,更新集合S,包括集合S和T中的非相同元素 # 方法 S.add(x) 如果x不在集合S中,将x增加到S S.discard(x) 移除S中元素x,如果x不在集合S中,不报错 S.remove(x) 移除S中元素x,如果x不在集合S中,产生KeyError异常 S.isdisjoint(T) 如何集合S与T没有相同元素,返回True S.clear() 移除S中所有元素 S.pop() 随机返回S的一个元素,更新S,若S为空产生KeyError异常 S.copy() 返回集合S的一个副本 len(S) 返回集合S的元素个数 x in S 判断S中元素x,x在集合S中,返回True,否则返回False x not in S 判断S中元素x,x不在集合S中,返回True,否则返回False set(x) 将其他类型变量x转变为集合类型
序列 概念 具有先后关系可重复,有顺序的元素组合 序列:字符串、元组、列表 序列有序号,正向递增序号(从0开始),反向递减序号(到-1结束)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 操作符 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为步长的元素子序列 # 方法 len(s) 返回序列s的长度,即元素个数 min(s) 返回序列s的最小元素,s中元素需要可比较 max(s) 返回序列s的最大元素,s中元素需要可比较 s.index(x) 或 s.index(x, i, j) 返回序列s从i开始到j位置中第一次出现元素x的位置 s.count(x) 返回序列s中出现x的总次数
元组 不可修改的序列 () 使用小括号 () 或 tuple() 创建,元素间用逗号’,’分隔,可以使用或不使用小括号
列表 最主要的组合类型 可修改的序列 使用方括号 [] 或 list()
创建,元素间用逗号 , 分隔
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 方法 ls[i] = x 替换列表ls第i元素为x ls[i: j: k] = lt 用列表lt替换ls切片后所对应元素子列表 del ls[i] 删除列表ls中第i元素 del ls[i: j: k] 删除列表ls中第i到第j以k为步长的元素 ls += lt 更新列表ls,将列表lt元素增加到列表ls中 ls *= n 更新列表ls,其元素重复n次 ls.append(x) 在列表ls最后增加一个元素x ls.clear() 删除列表ls中所有元素 ls.copy() 生成一个新列表,赋值ls中所有元素 ls.insert(i,x) 在列表ls的第i位置增加元素x ls.pop(i) 将列表ls中第i位置元素取出并删除该元素 ls.remove(x) 将列表ls中出现的第一个元素x删除 ls.reverse() 将列表ls中的元素反转
列表排序 list.sort(key=None, reverse=False) key – 指定排序方法和排序参数 reverse – 排序规则,reverse = True 降序, reverse = False 升序(默认)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 字典键值对,自定义排序 def takeSecond(elem): # 排序函数 return elem[1] s = "asdasdvaswqbasdbbb" # 随便打的一个字符串 d = dict() for i in s: d[i] = d.get(i, 0) + 1 # 统计次数,生成字典 print(d) # {'a': 4, 's': 4, 'd': 3, 'v': 1, 'w': 1, 'q': 1, 'b': 4} l = list(d.items()) # 将字典转换为列表 print(l) # [('a', 4), ('s', 4), ('d', 3), ('v', 1), ('w', 1), ('q', 1), ('b', 4)] l.sort(key=lambda x: x[1]) # 使用lambda表达式排序 print(l) # [('v', 1), ('w', 1), ('q', 1), ('d', 3), ('a', 4), ('s', 4), ('b', 4)] l.sort(key=takeSecond, reverse=True) # 使用函数排序,并且逆序排序 print(l) # [('a', 4), ('s', 4), ('b', 4), ('d', 3), ('v', 1), ('w', 1), ('q', 1)]
序列类型应用场景 数据表示:元组 和 列表
元组用于元素不改变的应用场景,更多用于固定搭配场景
列表更加灵活,它是最常用的序列类型
最主要作用:表示一组有序数据,进而操作它们
数据保护:如果不希望数据被程序所改变,转换成元组类型
元素遍历使用
字典 映射,键值对
字典是键值对的集合,键值对之间无序
采用大括号{}或dict()
创建,键值对用冒号: 表示
1 2 3 4 5 6 7 8 9 10 11 # 方法 del d[k] 删除字典d中键k对应的数据值 k in d 判断键k是否在字典d中,如果在返回True,否则False d.keys() 返回字典d中所有的键信息 d.values() 返回字典d中所有的值信息 d.items() 返回字典d中所有的键值对信息 d.get(k, <default>) 键k存在,则返回相应值,不在则返回<default>值 d.pop(k, <default>) 键k存在,则取出相应值,不在则返回<default>值 d.popitem() 随机从字典d中取出一个键值对,以元组形式返回 d.clear() 删除所有的键值对 len(d) 返回字典d中元素的个数
字典类型应用场景:映射的表达,元素遍历
映射无处不在,键值对无处不在
例如:统计数据出现的次数,数据是键,次数是值
最主要作用:表达键值对数据,进而操作它们
jieba库 jieba:第三方库、中文分词处理库
jieba分词的原理:jieba分词依靠中文词库
利用一个中文词库,确定中文字符之间的关联概率
中文字符间概率大的组成词组,形成分词结果
除了分词,用户还可以添加自定义的词组
jieba分词的三种模式:精确模式、全模式、搜索引擎模式
精确模式:把文本精确的切分开,不存在冗余单词
全模式:把文本中所有可能的词语都扫描出来,有冗余
搜索引擎模式:在精确模式基础上,对长词再次切分
方法:
1 2 3 4 5 6 7 jieba.cut(s) # 精确模式,返回一个可迭代的数据类型 jieba.cut(s,cut_all=True) # 全模式,输出文本s中所有可能的单词 jieba.cut_for_search(s) # 搜索引擎模式,适合搜索引擎建立索引的分词结果 jieba.lcut(s) # 精确模式,返回一个列表类型,建议使用 jieba.lcut(s,cut_all=True) # 全模式返回一个列表类型,存在冗余,建议使用 jieba.lcut_for_search(s) # 搜索引擎模式,返回一个列表类型的分词结果,存在冗余,建议使用 jieba.add_word(w) # 向分词词典中增加新词w
Python-文件和数据格式化 第七周 文件的类型 文件是数据的抽象和集合
文件是存储在辅助存储器上的数据序列
文件是数据存储的一种形式
文件展现形态:文本文件和二进制文件
文本文件 vs. 二进制文件
文件文件和二进制文件只是文件的展示方式
本质上,所有文件都是二进制形式存储
形式上,所有文件采用两种方式展示
文本文件 文件是数据的抽象和集合
由单一特定编码组成的文件,如UTF-8编码
由于存在编码,也被看成是存储着的长字符串
适用于例如:.txt文件、.py文件等
二进制文件 文件是数据的抽象和集合
直接由比特0和1组成,没有统一字符编码
一般存在二进制0和1的组织结构,即文件格式
适用于例如:.png文件、.avi文件等
文件的打开关闭 文件处理的步骤: 打开-操作-关闭
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 # 文件操作 <变量名> = open(<文件名>, <打开模式>,[encouding="编码格式"]) open()、close() # 打开模式 文件的打开模式 描述 'r' 只读模式,默认值,如果文件不存在,返回FileNotFoundError 'w' 覆盖写模式,文件不存在则创建,存在则完全覆盖 'x' 创建写模式,文件不存在则创建,存在则返回FileExistsError 'a' 追加写模式,文件不存在则创建,存在则在文件最后追加内容 'b' 二进制文件模式 't' 文本文件模式,默认值 '+' 与r/w/x/a一同使用,在原功能基础上增加同时读写功能 # 文件打开 f = open("f.txt") - 文本形式、只读模式、默认值 f = open("f.txt", "rt") - 文本形式、只读模式、同默认值 f = open("f.txt", "w") - 文本形式、覆盖写模式 f = open("f.txt", "a+") - 文本形式、追加写模式+ 读文件 f = open("f.txt", "x") - 文本形式、创建写模式 f = open("f.txt", "b") - 二进制形式、只读模式 f = open("f.txt", "wb") - 二进制形式、覆盖写模式 # 文件关闭 file_name.close() # 打开文件后采用close()关闭文件是一个好习惯, # 如果不调用close(),当前Python程序完全运行退出时,该文件引用被释放,即程序退出时,相当于调用了close()。
文件读写 1 2 3 4 5 6 7 8 9 10 11 12 read()、white() # 读取 <f>.readall() 读入整个文件内容,返回一个字符串或字节流* <f>.read(size=-1) 读入全部内容,如果给出参数,读入前size长度 <f>.readline(size=-1) 读入一行内容,如果给出参数,读入该行前size长度 <f>.readlines(hint=-1) 读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行 # 写入 <f>.write(s) 向文件写入一个字符串或字节流 <f>.writelines(lines) 将一个元素全为字符串的列表写入文件 <f>.seek(offset) 改变当前文件操作指针的位置,offset含义:0 – 文件开头; 1 – 当前位置; 2 – 文件结尾
自动轨迹绘制 问题分析
需求:根据脚本来绘制图形?
不通过写代码而通过写数据绘制轨迹
数据脚本是自动化最重要的第一步
基本思路
步骤1:定义数据文件格式(接口)
步骤2:编写程序,根据文件接口解析参数绘制图形
步骤3:编制数据文件
扩展 理解方法思维
自动化思维:数据和功能分离,数据驱动的自动运行
接口化设计:格式化设计接口,清晰明了
二维数据应用:应用维度组织数据,二维数据最常用
应用问题的扩展
扩展接口设计,增加更多控制接口
扩展功能设计,增加弧形等更多功能
扩展应用需求,发展自动轨迹绘制到动画绘制
多维数据 存储 表示 操作 维度:一组数据的组织形式 数据处理:python与文件之间的数据转换
一维数据:由对等关系的有序或无序数据构成,采用线性方式组织,对应列表、数组和集合等概念 二维数据:由多个一维数据构成,是一维数据的组合形式,表格 多维数据:由一维或二维数据在新维度上扩展形成 高维数据:仅利用最基本的二元关系展示数据间的复杂结构,对应字典 数据维度是数据的组织形式
数据的操作周期:存储 <->表示 <-> 操作
一维数据的表示 数据有序:使用列表类型,可以用for遍历 数据无序:使用集合类型,可以用for遍历
一维数据的存储: 空格分隔:
使用一个或多个空格分隔进行存储,不换行
缺点:数据中不能存在空格 逗号分隔:
使用英文半角逗号分隔数据进行存储,不换行
缺点:数据中不能有英文逗号 其他方式:
使用其他符号或符号组合分隔,建议采用特殊符号
缺点:需要根据数据特点定义,通用性较差
一维数据的读入处理 从空格分隔的文件中读入数据 从特殊符号分隔的文件中读入数据
一维数据的写入处理 采用空格分隔方式将数据写入文件 采用特殊分隔方式将数据写入文件
二维数据的表示 使用列表类型 双重列表
列表类型可以表达二维数据
使用二维列表
双重for循环遍历
CSV与二维存储 CSV数据存储格式 CSV: Comma-Separated Values
国际通用的一二维数据存储格式,一般.csv扩展名
每行一个一维数据,采用逗号分隔,无空行
Excel和一般编辑软件都可以读入或另存为csv文件
如果某个元素缺失,逗号仍要保留
二维数据的表头可以作为数据存储,也可以另行存储
逗号为英文半角逗号,逗号与数据之间无额外空格
一般来说,CSV文件都是文本文件,由相同编码字符组成。
二维数据的存储 按行存?按列存?
按行存或者按列存都可以,具体由程序决定
一般索引习惯:ls[row][column]
,先行后列
根据一般习惯,外层列表每个元素是一行,按行存
读写处理:双重列表+.split()和.join()
wordcloud库 wordcloud:第三方库、词云库
pip install wordcloud # 安装
使用: wordcloud库把词云当作一个WordCloud对象
wordcloud.WordCloud()代表一个文本对应的词云
可以根据文本中词语出现的频率等参数绘制词云
词云的绘制形状、尺寸和颜色都可以设定
步骤: 配置对象参数 加载词云文件 输出词云文件
文本-> ① 分隔: 以空格分隔单词 ② 统计: 单词出现次数并过滤 ③ 字体: 根据统计配置字号 ④ 布局: 颜色环境尺寸 ->词云
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # 常用方法 w = wordcloud.WordCloud() # 以WordCloud对象为基础,配置参数、加载文本、输出文件 w.generate(txt) # 向WordCloud对象w中加载文本txt w.to_file(filename) # 将词云输出为图像文件,.png或.jpg格式 # ps import wordcloud c = wordcloud.WordCloud() # 步骤1:配置对象参数 c.generate("wordcloud by Python") # 步骤2:加载词云文本 c.to_file("pywordcloud.png") # 步骤3:输出词云文件 # 配置对象参数 width 指定词云对象生成图片的宽度,默认400像素 height 指定词云对象生成图片的高度,默认200像素 min_font_size 指定词云中字体的最小字号,默认4号 max_font_size 指定词云中字体的最大字号,根据高度自动调节 font_step 指定词云中字体字号的步进间隔,默认为1 font_path 指定字体文件的路径,默认None max_words 指定词云显示的最大单词数量,默认200 stop_words 指定词云的排除词列表,即不显示的单词列表 mask 指定词云形状,默认为长方形,需要引用imread()函数 # ps from scipy.misc import imread mk=imread("pic.png") w=wordcloud.WordCloud(mask=mk)
扩展
了解wordcloud更多参数,扩展词云能力
特色词云:设计一款属于自己的特色词云风格
更多文件:用更多文件练习词云生成
PIL库 PIL:第三方库,图像处理,图像归档 图像归档:对图像进行批处理,生成图像预览,图像格式转换等 图像处理:图像基本处理,像素处理,颜色处理
1 2 3 4 5 6 7 8 # 安装 pip install pillow # 子库 Image、ImageChops、ImageColor、ImageCrackCode、ImageDraw、 ImageEnhance、ImageFile、ImageFileIO、ImageFilter、ImageFont、 ImageGL、ImageGrab、Imagemath、ImageOps、ImagePalette、ImagePath、 ImageQt、ImageSequence、ImageStat、ImageTk、ImageWin
Image字库 Image是PIL最重要的类,代表一张图片
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 # 引入Image类 from PIL import Image # Image类的图像读取和创建方法 Image.open(filename) # 加载图像文件 Image.new(mode,size,color) # 根据参数创建一个新的图像 Image.open(StringIO.StringIO(buffer)) # 从字符串中获取图像 Image.frombytes(mode,size,data) # 根据像素点data创建图像 Image.verify() # 对图像文件完整性进行检查,返回异常 # Image类处理图像的常用属性 Image.format # 标识图像格式或来源,如果图像不是从文件读取,值为None Image.mode # 图像的色彩模式,L为灰度图像,RGB为真彩色图像,CMYK为出版图像 Image.size # 图像宽度和高度,单位px,返回值是二元元组tuple Image.palette # 调色板属性,返回一个ImagePalette类型 # open打开图像第一帧 读取序列类图像文件,如GIF、FLI、FLC、TIFF Image.seek(frame) # 跳转并返回图像中的指定帧 Immage.tell() # 返回当前帧的序号 # Image类的图像转换和保存方法 Image.save(filename,format) # 将图像保存为filename文件名,format文件格式 Image.convert(mode) # 使用不同的参数,转换图像为新的模式 Image.thumbnail(size) # 创建图像的缩略图,size是缩略图尺寸的二元元组 # Image类的图像旋转和缩放 Image.resize(size) # 按size大小调整图像,生成副本 Image.rotate(size) # 按angle角度旋转图像,生成副本 # Image类的图像像素和通道处理方法 Image.point(func) # 根据函数func的功能队每个元素进行计算,返回图像副本 Image.split() # 提取RGB图像的每个颜色通道,返回图像副本 Image.merge(mode,bands) # 合并通道,其中mode表示色差,bands表示新的色彩通道 Image.blend(im1,im2,alpha) # 将两幅图像im1和im2按照公式插值后生成新的图像:im1*(1.0-alpha)+im2*alpha # ImageFilter类的预定义过滤方法 ImageFilter.BLUR # 图像的模糊效果 ImageFilter.CONTOUR # 图像的轮廓效果 ImageFilter.DETAIL # 图像的细节效果 ImageFilter.EDGE_ENHANCE # 图像的边界加强效果 ImageFilter.EDGE_ENHANCE_MORE # 图像的阈值边界加强效果 ImageFilter.EMBOSS # 图像的浮雕效果 ImageFilter.FIND_EDGES # 图像的边界效果 ImageFilter.SMOOTH # 图像的平滑效果 ImageFilter.SMOOTH_MORE # 图像的阈值平滑效果 ImageFilter.SHARPEN # 图像的锐化效果 # ImageEnhance类的图像增强和滤镜方法 ImageEnhance.enhance(factor) # 对选择属性的数值增强factor倍 ImageEnhance.Color(im) # 调整图像的颜色平衡 ImageEnhance.Contrast(im) # 调整图像的对比度 ImageEnhance.Brightness(im) # 调整图像的亮度 ImageEnhance.Sharpness(im) # 调整图像的锐度
CSV库和JSON库 CSV:标准库,操作CSV的功能
json:处理JSON格式的标准库 json库包含两个过程:编码和解码,序列号和反序列化
1 2 3 4 5 # json方法 json.dumps(obj,sort_keys=False,indent=None) # 将python的数据类型转换为JSON格式,编码 json.loads(string) # 将JSON格式字符串转换成python的数据类型,解码 json.dump(obj,fp,sort_keys=False,indent=None) # 与dumps功能一致,输出刀文件fp json.load(fp) # 与loads功能一致,从文件fp中读取
Python-程序设计方法论 第八周 问题解决方法 自顶向下 解决复杂问题的有效方法
将一个总问题表达为若干个小问题组成的形式
使用同样方法进一步分解小问题
直至,小问题可以用计算机简单明了的解决
函数是自顶向下设计的关键元素,通过定义函数及其参数逐层开展程序设计。
自底向上 逐步组建复杂系统的有效测试方法
分单元测试,逐步组装
按照自顶向下相反的路径操作
直至,系统各部分以组装的思路都经过测试和验
Python程序设计思维 人类思维特征
逻辑思维:推理和演绎,数学为代表,A->B B->C A->C
实证思维:实验和验证,物理为代表,引力波<-实验
计算思维:设计和构造,计算机为代表,汉诺塔递归
计算思维 抽象和自动化
计算思维:Computational Thinking
抽象问题的计算过程,利用计算机自动化求解
计算思维是基于计算机的思维方式
计算思维的本质是:抽象和自动化。
计算思维 抽象问题的计算过程,利用计算机自动化求解
计算思维基于计算机强大的算力及海量数据
抽象计算过程,关注设计和构造,而非因果
以计算机程序设计为实现的主要手段
计算思维是基于计算机的思维模式
计算思维与程序设计 编程是将计算思维变成现实的手段
计算生态: 开源运动、开源思想深入演化和发展 没有顶层设计、以功能为单位、具备三个特点
计算生态与Python语言
以开源项目为代表的大量第三方库 Python语言提供 >15万个第三方库
库的建设经过野蛮生长和自然选择 同一个功能,Python语言2个以上第三方库
库之间相互关联使用,依存发展 Python库间广泛联系,逐级封装
社区庞大,新技术更迭迅速 AlphaGo深度学习算法采用Python语言开源
API != 生态
计算生态的价值 创新:跟随创新、集成创新、原始创新
加速科技类应用创新的重要支撑
发展科技产品商业价值的重要模式
国家科技体系安全和稳固的基础
计算生态的运用 刀耕火种 -> 站在巨人的肩膀上
编程的起点不是算法而是系统
编程如同搭积木,利用计算生态为主要模式
编程的目标是快速解决问题
优质的计算生态(第三方库):http://python123.io
理解和运用计算生态
用户体验与及软件产品 用户体验 实现功能 -> 关注体验
用户体验指用户对产品建立的主观感受和认识
关心功能实现,更要关心用户体验,才能做出好产品
编程只是手段,不是目的,程序最终为人类服务
提高用户体验的方法 -进度展示 -异常处理 -其他方法:打印输出、日志文件、帮助信息
软件程序 -> 软件产品 用户体验是程序到产品的关键环节
软件产品=程序功能+用户体验
基本的程序设计模式 IPO:输入、处理、输出 -确定IPO:明确计算部分及功能边界 -编写程序:将计算求解的设计变成现实 -调试程序:确保程序按照正确逻辑能够正确运行
自顶向下设计:将项目细化成每个小模块直至可以简单的实现 模块化设计:通过函数或对象封装将程序划分为模块及模块间的表达,分而治之,模块内部紧耦合、模块之间松耦合 配置化设计:程序引擎+配置文件 -引擎+配置:程序执行和配置分离,将可选参数配置化 -将程序开发变成配置文件编写,扩展功能而不修改程序 -关键在于接口设计,清晰明了、灵活可扩展
应用开发的四个步骤 从应用需求到软件产品
1 产品定义:对应用需求充分理解和明确定义 产品定义,而不仅是功能定义,要考虑商业模式
2 系统架构:以系统方式思考产品的技术实现 系统架构,关注数据流、模块化、体系架构应用开发的四个步骤 从应用需求到软件产品
3 设计与实现:结合架构完成关键设计及系统实现 结合可扩展性、灵活性等进行设计优化
4 用户体验:从用户角度思考应用效果 用户至上,体验优先,以用户为中心
第三方库安装 -Python社区:https://pypi.org/ -三种安装方法:pip、Anaconda、文件安装
pip安装 官方默认安装 1 2 3 4 5 6 7 8 9 # 常用的pip命令 pip -h # 查看帮助说明文档 pip install <name> # 安装指定的第三方库 pip install -U <name> # 使用-U标签更新已安装的指定第三方库 pip uninstall <name> # 卸载指定的第三方库 pip download <name> # 下载但不安装指定的第三方库 pip show <name> # 列出某个指定第三方库的详细信息 pip search <name> # 根据关键词在名称和介绍中搜索第三方库 pip list # 列出当前系统已经安装的第三方库
集成安装 结合特定Python开发工具的批量安装 Anaconda:https://www.continuum.io
支持近800个第三方库
包含多个主流工具
适合数据计算领域开发
文件安装 下载编译后的文件安装: UCI官网:https://www.lfd.uci.edu/~gohlke/pythonlibs/ UCI文件安装方法:安装name库
步骤1:在UCI页面上搜索name
步骤2:下载对应版本的文件
步骤3:使用pip install <文件名>安装
os库 os库基本介绍 os库提供通用的、基本的操作系统交互功能(Windows、Mac OS、Linux)
os库是Python标准库,包含几百个函数
常用路径操作、进程管理、环境参数等几类
路径操作:os.path子库,处理文件路径及信息
进程管理:启动系统中其他程序
环境参数:获得系统软硬件信息等环境参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # 路径:path用于操作和处理文件路径 os.path # 子库 os.path.abspath(path) # 返回path在当前系统中的绝对路径 os.path.normpath(path) # 归一化path的表示形式,统一用\\分隔路径 os.path.relpath(path) # 返回当前程序与文件之间的相对路径 (relative path) os.path.dirname(path) # 返回path中的目录名称 os.path.basename(path) # 返回path中最后的文件名称 os.path.join(path,*paths) # 组合path与paths,返回一个路径字符串 os.path.exists(path) # 判断path对应文件或目录是否存在,返回True或False os.path.isfile(path) # 判断path所对应是否为已存在的文件,返回True或False os.path.isdir(path) # 判断path所对应是否为已存在的目录,返回True或False os.path.getatime(path) # 返回path对应文件或目录上一次的访问时间 os.path.getmtime(path) # 返回path对应文件或目录最近一次的修改时间 os.path.getctime(path) # 返回path对应文件或目录的创建时间 os.path.getsize(path) # 返回path对应文件的大小,以字节为单位 # 进程管理 os.system(command) # 执行程序或命令command,在Windows系统中,返回值为cmd的调用返回信息 # 环境参数 os.chdir(path) # 修改当前程序操作的路径 os.getcwd() # 返回程序的当前路径 os.getlogin() # 获得当前系统登录用户名称 os.cpu_count() # 获得当前系统的CPU数量 os.urandom(n) # 获得n个字节长度的随机字符串,通常用于加解密运算
批量自动化安装脚本 20个安装库 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #库名 用途 pip安装指令 NumPy N维数据表示和运算 pip install numpy Matplotlib 二维数据可视化 pip install matplotlib PIL 图像处理 pip install pillow Scikit-Learn 机器学习和数据挖掘 pip install sklearn Requests HTTP协议访问及网络爬虫 pip install requests Jieba 中文分词 pip install jieba Beautiful Soup HTML和XML解析器 pip install beautifulsoup4 Wheel Python 第三方库文件打包工具 pip install wheel PyInstaller 打包Python源文件为可执行文件 pip install pyinstaller Django Python 最流行的Web开发框架 pip install django Flask 轻量级Web开发框架 pip install flask WeRoBot 微信机器人开发框架 pip install werobot SymPy 数学符号计算工具 pip install sympy Pandas 高效数据分析和计算 pip install pandas Networkx 复杂网络和图结构的建模和分析 pip install networkx PyQt5 基于Qt的专业级GUI开发框架 pip install pyqt5 PyOpenGL 多平台OpenGL开发接口 pip install pyopengl PyPDF2 PDF文件内容提取及处理 pip install pypdf2 docopt Python命令行解析 pip install docopt PyGame 简单小游戏开发框架 pip install pygame
自动安装脚本 1 2 3 4 5 6 7 8 9 10 11 12 import os libs = {"numpy", "matplotlib", "pillow", "sklearn", "requests",\ "jieba", "beautifulsoup4", "wheel", "networkx", "sympy",\ "pyinstaller", "django", "flask", "werobot", "pyqt5",\ "pandas", "pyopengl", "pypdf2", "docopt", "pygame"} try: for lib in libs: os.system("pip install " + lib) print("Successful") except: print("Failed Somehow")
自动化脚本+
编写各类自动化运行程序的脚本,调用已有程序
扩展应用:安装更多第三方库,增加配置文件
扩展异常检测:捕获更多异常类型,程序更稳定友
Python计算生态概览 计算处理与人工智能 数据表示->数据清洗->数据统计->数据可视化->数据挖掘->人工智能
数据表示:采用合适方式用程序表达数据
数据清理:数据归一化、数据转换、异常值处理
数据统计:数据的概要理解,数量、分布、中位数等
数据可视化:直观展示数据内涵的方式
数据挖掘:从数据分析获得知识,产生数据外的价值
人工智能:数据/语言/图像/视觉等方面深度分析与决策
雷达图 霍兰德人格分析
霍兰德认为:人格兴趣与职业之间应有一种内在的对应关系
人格分类:研究型、艺术型、社会型、企业型、传统型、现实性
职业:工程师、实验员、艺术家、推销员、记事员、社会工作者
需求:雷达图方式验证霍兰德人格分析
输入:各职业人群结合兴趣的调研数据
输出:雷达图
通用雷达图绘制:matplotlib库
专业的多维数据表示:numpy库
输出:雷达图
目标+沉浸+熟练
编程的目标感:寻找感兴趣的目标,寻(wa)觅(jue)之
编程的沉浸感:寻找可实现的方法,思(zuo)考(mo)之
编程的熟练度:练习、练习、再练习,熟练之
玫瑰花绘制
需求:用Python绘制一朵玫瑰花,献给所思所念
输入:你的想象力!
输出:玫瑰花
绘制机理:turtle基本图形绘制
绘制思想:因人而异
思想有多大、世界就有多大
艺术之于编程,设计之于编程
艺术:思想优先,编程是手段
设计:想法和编程同等重要
工程:编程优先,思想次之 编程不重要,思想才重要!
认识自己:明确自己的目标,有自己的思想(想法)
方式方法:编程只是手段,熟练之,未雨绸缪为思想服务
为谁编程:将自身发展与祖国发展相结合,创造真正价值
提升 Python网络爬虫与信息提取 Python数据分析与展示 Python机器学习应用 Python科学计算三维可视化 Python+大数据+人工智能 Python+嵌入式+可编程硬件
总结 Python基础语法(全体系) 1、基本数据类型 -整数、浮点数、复数 -字符串
2、程序的控制结构 -分支结构与异常处理 -遍历循环、无限循环
3、函数和代码复用 -函数定义和使用 -函数递归
4、组合数据类型 -集合 -序列:元祖和列表 -字典
5、文件和数据格式化 -文件的使用 -一二维数据的表示存储和处理
Python计算生态(详解7个) 1、turtle -基本图形绘制 2、time库 -时间的基本处理 3、random -随机数产生及应用 4、PyInstaller -源代码打包为可执行文件 5、jieba -简洁的中文分词 6、os -操作系统小功能 7、wordcloud -中英文词云生成
Python计算生态(概览) 1、从数据处理到人工智能 -数据分析 -数据可视化 -文本处理 -机器学习
2、从web解析到网络空间 -网络爬虫 -Web信息提取 -Web网站开发 -网络应用开发
3、从人机交互到艺术设计 -图形用户界面 -游戏开发 -虚拟现实 -图形艺术
Python实例(16个) -实例1:温度转换 -实例2:Python蟒蛇绘制 -实例3:天天向上的力量 -实例4:文本进度条 -实例5:身体质量指数BMI -实例6:圆周率的计算 -实例7:七段数码管绘制 -实例8:科赫雪花小包裹 -实例9:基本统计值计算 -实例10:文本词频统计 -实例11:自动轨迹绘制 -实例12:政府工作报告词云 -实例13:体育竞技分析 -实例14:第三方库安装脚本 -实例15:霍兰德人格分析雷达图 -实例16:玫瑰花绘制
深入学习Python -Python网络爬虫与信息提取 -Python数据分析与展示 -Python机器学习应用 -Python科学计算三维可视化 -Python+大数据+人工智能 -Python+嵌入式+可编程硬件
写在最后 Python学习还是只能用于扩展自己,要深入学习更多的知识掌握更多的能力,才能够在计算机中立足。 好好学习,天天向上!
学习资源: 中国大学生MOOC Python语言程序设计 国家精品 嵩天老师:https://www.icourse163.org/course/BIT-268001