(还在更新中…) 这篇博客花费了我的大量时间和精力,从创作到维护;若认可本篇博客,希望给一个点赞、收藏
并且,遇到了什么问题,请在评论区留言,我会及时回复的
这本书对Python的知识点的描述很详细,而且排版看的很舒服
- 几个例题: 假装自己从零开始学,将一些有代表性、有意思的例题抽取出来
- 部分复习题: 遇到有意思的复习题,我会拿出来,并且进行分析
- 上机实践: 全部上机实践题的解题思路
-
- 选择题:1、3、7、8
- 案例研究:使用Pillow库处理图像文件
- 案例研究:使用嵌套循环实现图像处理算法
- 第四章 常用内置数据类型
- 案例研究:科学计算和数据分析
- 选择题:4、5、7、11、12
- 例题及上机实践:2~5
- 案例研究:21点扑克牌游戏
- 第七章 错误和异常处理
- 案例研究:使用调试器调试Python程序
- 第八章 函数和函数式编程
-
- 一些知识点总结和几个例题
- 第九章 面向对象的程序设计
- 第十一章 算法与数据结构基础
- 第十二章 图形用户界面
-
- 案例研究:简易图形用户界面计算器
- 图形绘制模块:turtle
- 第十四章 数值日期和时间处理
- 第十五章 字符串和文本处理
- 第十六章 文件和数据交换
- 第十八章 网络编程和通信
- 第十九章 并行计算:进程、线程和协程
通过此案例,进一步了解Python的基本概念:模块、对象、方法和函数的使用
一:编程判断某一年是否为闰年
闰年:年份能被4整除但不能被100整除,或者可以被400整除。
口诀:四年一闰,百年不闰,四百必闰
二:利用嵌套循环打印九九乘法表
三:enumerate()函数和下标元素循环示例
Python语言中的for循环直接迭代对象集合中的元素,如果需要在循环中使用索引下标访问集合元素,则可以使用内置的enumerate()函数
enumerate()函数用于将一个可遍历的数据对象(例如列表、元组或字符串)组合为一个索引序列,并返回一个可迭代对象,故在for循环当中可直接迭代下标和元素
四:zip()函数和并行循环示例
如果需要并行遍历多个可迭代对象,则可以使用Python的内置函数zip()
zip()函数将多个可迭代对象中对应的元素打包成一个个元组,然后返回一个可迭代对象。如果元素的个数不一致,则返回列表的长度与最短的对象相同。
利用运算符*
还可以实现将元组解压为列表
五:map()函数和循环示例
如果需要遍历可迭代对象,并使用指定函数处理对应的元素,则可以使用Python的内置函数map()
- func作用于seq中的每一个元素,并将所有的调用结果作为可迭代对象返回。
- 如果func为None,该函数的作用等同于zip()函数
字符串拼接(使用了匿名函数lambda):
通过图像处理算法案例,深入了解Python数据结构和基本算法流程
一:Python内置数据类型概述
Python中一切皆为对象,而每个对象属于某个数据类型
Python的数据类型包括:
与其他计算机语言有精度限制不同,Python中的整数位数可以为任意长度(只受限于计算机内存)。
整型对象是不可变对象。 与其他计算机语言中的double和float对应
Python的浮点类型的精度和系统相关 当数值字符串中包含虚部j(或J)时即复数字面量
序列数据类型表示若干有序数据.
在Python中没有独立的字符数据类型,字符即长度为1的字符串 表示任意数据类型的序列,例如:(“z”,“g”,“h”,6,6,6)
- bytes(字节序列)
表示字节(8位)序列数据
表示可以修改的任意类型数据的序列,比如:[‘z’,‘g’,‘h’,6,6,6] 表示可以修改的字节(8位)数组
集合数据类型表示若干数据的集合,数据项目没有顺序,且不重复
字典数据类型:dict
字典数据类型用于表示键值对的字典
- NoneType数据类型包含唯一值None,主要用于表示空值,如没有返回值的函数的结果
- NotImplementedType数据类型包含唯一值NotImplemented,在进行数值运算和比较运算时,如果对象不支持,则可能返回该值
通过Python科学计算和数据分析库的安装和基本使用,了解使用Python进行科学计算的基本方法
一:Python中内置的序列数据类型
- 元组也称为定值表,用于存储固定不变的表
- 列表也称为表,用于存储其值可变的表
- 字符串是包括若干字符的序列数据,支持序列数据的基本操作
- 字节序列数据是包括若干字节的序列。Python抓取网页时返回的页面通常为utf-8编码的字节序列。
字节序列和字符串可以直接相互转换(字节编码和解码):
二:序列的切片操作示例
三:序列的连接和重复操作
- 通过连接操作符
+
可以连接两个序列,形成一个新的序列对象- 通过重复操作符
*
可以重复一个序列n次- 连接操作符和重复操作符也支持复合赋值运算,即:
+=
,*=
四:序列的成员关系操作
七:使用元组字面量,tuple创建元组实例对象的实例
如果元组中只有一个项目,后面的逗号不能省略。
Python解释器把(1)解释为整数1,将(1,)解释为元组
八:使用列表字面量,list创建列表实例对象的实例
补充:列表是可变对象,故用户可以改变列表对象中元素的值,也可以通过
del
删除某元素九:列表解析表达式示例
使用列表解析表达式可以简单,高效地处理一个可迭代对象,并生成结果列表
选择题:4、5、7、11、12
通过猜单词游戏的设计和实现,帮助读者了解使用Python系列数据类型和控制流程
一:运行时提示输入密码
input()#为了看到输出结果。因为执行完毕后,控制台会立马关闭输入密码时,一般需要不明显,则可以使用模块getpass,以保证用户输入的密码在控制台中不回显
注意:上面这个代码,如果使用IDLE执行,会因为安全问题而执行失败
但是,在控制台中执行就没问题,看输出结果(可以看到,输入的密码不会显示出来):
二:重定向标准输出到一个文件的示例
这种重定向由控制台完成,而与Python本身无关。
其目的是将显示屏从标准输出中分离,并将输出文件与标准输出关联,即程序的执行结果将写入输出文件,而不是发送到显示屏中显示
通过21点扑克牌游戏的设计和实现,了解使用Python数据类型、控制流程和输入输出
Python语言采用结构化的异常处理机制捕获和处理异常
而我感觉,Python在这方面的知识点其实和Java的差不多
一:程序的错误和异常处理
指源代码中的拼写错误,这些错误导致Python编译器无法把Python源代码转换为字节码,故也称之为编译错误
在解释执行过程中产生的错误
- 程序中没有导入相关的模块,NameError
程序可以执行(程序运行本身不报错),但执行结果不正确。
对于逻辑错误,Python解释器无能为力,需要用户根据结果来调试判断大部分由程序错误而产生的错误和异常一般由Python虚拟机自动抛出。另外,在程序中如果判断某种错误情况,可以创建相应的异常类的对象,并通过raise语句抛出
在程序中的某个方法抛出异常后,Python虚拟机通过调用堆栈查找相应的异常捕获程序。如果找到匹配的异常捕获程序(即调用堆栈中的某函数使用try…except语句捕获处理),则执行相应的处理程序(try…except语句中匹配的except语句块)
不管异常发生与否都保证执行的语句如果堆栈中没有匹配的异常捕获程序,则Python虚拟机捕获处理异常,在控制台打印出异常的错误信息和调用堆栈,并中止程序的执行
except语句可以写多个,但是要注意一点:系统是自上而下匹配发生的异常,所以用户需要将带有最具体的(即派生类程度最高的)异常类的except写在前面
三:创建自定义异常,处理应用程序中出现的负数参数的异常
自定义异常类一般继承于Exception或其子类。自定义异常类的名称一般以Error或Exception为后缀
用户在编写程序时,在调试阶段往往需要判断代码执行过程中变量的值等信息:
- 用户可以使用print()函数打印输出结果
- 也可以通过断点跟踪调试查看变量
__debug__
也是布尔值,Python解释器有两种:调试模式和优化模式了解使用Python调试器调试程序的方法
一些知识点总结和几个例题
Python中函数的分类:
- Python语言安装程序同时会安装若干标准库,例如math、random等
- Python社区提供了许多其它高质量的库,在下载、安装这些库后,通过import语句可以导入库
- 函数名为有效的标识符(命名规则为全小写字母,可以使用下划线增加可阅读性,例如
my_func()
)- 函数可以使用return返回值
如果函数体中包含return语句,则返回值,
否则不返回,即返回值为空(None),无返回值的函数相当于其它编程语言中的过程调用函数之前程序必须先执行def语句,创建函数对象
- 内置函数对象会自动创建
- import导入模块时会执行模块中的def语句,创建模块中定义的函数
一:产生副作用的函数,纯函数
上面代码中的
print_star()
是一个产生副作用的函数,其副作用是向标准输出写入若干星号
- 副作用:例如读取键盘输入,产生输出,改变系统的状态等
- 在一般情况下,产生副作用的函数相当于其它程序设计语言中的过程,可以省略return语句
定义计算并返回第n阶调和数(1+1/2+1/3+…+1/n)的函数,输出前n个调和数
了解Python函数的定义和使用
由于本文的内容太多了,导致了两个很不好的结果,
一是:在网页中打开本篇博客的加载时间太长了,明显的卡顿很影响阅读体验;
二是:本人在对本篇文章进行更新或者修改内容时,卡的要死。
将本文第八章后面的很多内容拆分到新的文章中,望大家理解
- 《Python程序设计与算法基础教程(第二版)》江红 余青松,第九章课后习题答案
- 《Python程序设计与算法基础教程(第二版)》江红 余青松,第十章课后习题答案
- 《Python程序设计与算法基础教程(第二版)》江红 余青松,第十一章课后习题答案
我对图形用户界面基本无兴趣,无特殊情况,基本不打算碰这方面内容
案例研究:简易图形用户界面计算器
- Python实现简易图形用户界面计算器
与上一章相同,我对于图形绘制的兴趣也基本没有,尝试做了2-7题,就完全没兴趣做下去了
2. 参考例13.2利用Canvas组件创建绘制矩形的程序,尝试改变矩形边框颜色以及填充颜色
- 调用组件pack()方法,调整其显示位置和大小
- (x0,y0)是左上角的坐标
- (x1,y1)是右下角的坐标
3. 参考例13.3利用Canvas组件创建绘制椭圆的程序,尝试修改椭圆边框样式、边框颜色以及填充颜色
- (x0,y0)是左上角的坐标
- (x1,y1)是右下角的坐标
4. 参考例13.4利用Canvas组件创建绘制圆弧的程序,尝试修改圆弧样式、边框颜色以及填充颜色
- (x0,y0)是左上角的坐标
- (x1,y1)是右下角的坐标
- 选项start(开始角度,默认为0)和extend(圆弧角度,从start开始逆时针旋转,默认为90度)决定圆弧的角度范围
- 选项start用于设置圆弧的样式
5. 参考例13.5利用Canvas组件创建绘制线条的程序,尝试修改线条样式和颜色
- (x0,y0),(x1,y1),…,(xn,yn)是线条上各个点的坐标
6. 参考例13.6利用Canvas组件创建绘制多边形的程序,尝试修改多边形的形状、线条样式和填充颜色
- (x0,y0),(x1,y1),…,(xn,yn)是多边形上各个顶点的坐标
7. 参考例13.7利用Canvas组件创建绘制字符串和图形的程序,绘制y = cos(x) 的图形
- (x,y)是字符串放置的中心位置
图形绘制模块:turtle
后面章节内容:未完待续…