# Python大学实用教程 ![](/_static/images/python_course.png) ## 简介 本书面向零基础起点的学习者,以面向对象开发思想为核心,讲授Python语言的基本语法及其应用。全书共9章,包括编程语言的基础知识、Python开发环境的配置、Python内置对象类型、基本运算和语句、函数、类、模块和包、异常处理、读写文件。通过这些内容的学习,读者能够掌握Python的基础知识,并在学习过程中通过实例学习如何运用基础知识。 本书每章都配有矢量的习题,习题以编程实践为导向,学习者通过练习能够加深对基础知识的理解,并且初步体会到编程实践对大数据知识和能力的要求。 ## 购买 - 各大电商平台有售 - 电子工业出版社天猫旗舰店 ## 在线资源 ### 源码和 PPT 以下代码仓库中包括本书的所有源码、习题答案以及供教学参考的PPT [https://github.com/qiwsir/PythonCourse](https://github.com/qiwsir/PythonCourse) 如果上述仓库不能访问,也可以通过如下方式下载同样内容。 链接: https://pan.baidu.com/s/149sTH9kS0QY6ZMv1KBVsqA 提取码: kjoq ### 辅助文章 在我的微信公众号【老齐教室】上发布了很多关于Python编程语言的文章,供参考。 请阅读:[Python编程文章汇总](https://mp.weixin.qq.com/s/zkfCSuyMndWXkUashl3peg) ### 视频课程 与本书相关的视频课程(**注意:本视频课程不是本书标配,仅向读者推荐选用**) [Python零基础入门到实践](https://edu.csdn.net/course/detail/26676) ## 勘误与修订 **相关术语说明:** - 正文:不包含代码部分的文字内容 - 正数:即从页面顶部开始向下计数 - 倒数:即从页面底部开始向上计数 - 原文:即原来的叙述。如果针对原来内容有修改,则用删除符号(删除符号)标示。 - 修订:即相应内容修改之后的最终效果 - 说明:对所修改内容的说明 ---- ### 版次:2019年3月第1版 **印次:2019年3月第1次印刷** 1. 页码:001 - 行数:正文,正数第2行 - 原文:~~当然,~~现在本星球上的编程语言比较多, - 修订:现在本星球上的编程语言比较多, - 说明:删除原文中的“当然” 2. 页码:001 - 行数:正文,正数第3行 - 原文:本章将简要介绍一些相关的基本知识,并最终确定本书要学习的语言Python。 - 修订:编程语言的发展遵循着一定规律,其结构也符合特定的规章。本章将在对编程语言一般地简要理解基础上,最终确定本书要学习的语言Python。 - 说明:将“本章将简要......知识,并”删除,并用指定内容替换。 3. 页码:014 - 行数:正文,正数第3行 - 原文:特别推荐使用Ubuntu操作系统。 - 修订:特别推荐Ubuntu操作系统。 - 说明:删除“使用”二字。 4. 页码:016 - 行数:正文,倒数第8行 - 原文:读者可以通过修改软连接,……,关键词就是“Ubuntu 修改软连接” - 修订:读者可以通过修改软链接,……,关键词就是“Ubuntu 修改软链接” - 说明:“连接”修改为“链接”。 5. 页码:016 - 行数:正文,倒数第4行 - 原文:出现图2-2-4所示的界面。 - 修订:出现图2-2-5所示的界面。 - 说明:“图2-2-4”修改为“图2-2-5” 6. 页码:017 - 行数:正文,倒数第6行,倒数第4行。 - 原文:即Python 3的软连接指向的是Python 3.5。…… 可以按照自己的需要修改软连接。 - 修订:即Python 3的软链接指向的是Python 3.5。…… 可以按照自己的需要修改软链接。 - 说明:“连接”修改为“链接”。 7. 页码:021 - 行数:图2-2-17文字说明第2行 - 原文:注意写法,左后要有“\” - 修订:注意写法,最后要有“\” - 说明:“左”修改为“最”。 8. 页码:024 - 行数:图2-2-22的文字说明 - 原文:如果只安装了Python 3或者修改了软连接 - 修订:如果只安装了Python 3或者修改了软链接 - 说明:“连接”修改为“链接”。 9. 页码:025 - 行数:“练习和编程2”的第3题。 - 原文:在使用Ubuntu操作系统 …… 到第1章“练习和编程” - 修订:在Ubuntu操作系统 …… 到第1章“练习和编程1” - 说明:删除“使用”二字;将“练习和编程”修改为“练习和编程1”。 10. 页码:027 - 行数:倒数第1行 - 原文:用符号表示就是int。 - 修订:用符号int表示。 11. 页码:030 - 行数:正文,正数第4段第1行 - 原文:上面这种提问,在数学中或许容易回答, - 修订:此问题,在数学中或许容易回答, - 说明:将“上面这种提问”修改为“此问题”。 12. 页码:039 - 行数:正文,正数第2行 - 原文:想让计算机能够处理字符,也要如此处理,必须把字符与二进制的为(bit)之间建立起一个对应关系,这种对应关系被称为“字符编码”。 - 修订:想让计算机能够处理字符,也要如此,必须将字符与二进制的为(bit)之间建立起对应关系,这种对应关系称为“字符编码”。 - 说明:删除原来的“处理”、“一个”、“被”,并将原句中的“把”修改为“将”。 13. 页码:041 - 增加“表象上看” - 删除“函数”、“函数” - 增加:实质上…实例(对此句…内容)。 14. 页码:041 - 行数:正文,正数第1行 - 原文:尽管是数字,….,变成了字符串。这种由数字组成的字符串可以通过int函数和str函数实现相互间的类型转化。 - 修订:尽管是数字,….,变成了字符串。表象上看,这种由数字组成的字符串可以通过int和str实现相互间的类型转化,实质上,int('250')是以字符串“250”为参数创建一个整数类型实例(对此句的理解请参阅本书第6章内容)。 - 说明: 15. 页码:044 - 行数:正文,倒数第2行 - 增加一段:请思考并尝试:len("大学")的返回值是多少?在此基础上进一步体会帮助文档的说明。 - 说明:在“4. In:判断元素是否存在其中”前面增加上述内容,并单独一个段落。 16. 页码:052 - 行数:正文,正数第2行 - 原文:2. 分隔和组合 - 修订:2. 分割和组合 - 说明:将原文中的“隔”修改为“割”。 17. 页码:067 - 行数:正文,倒数第4自然段,第1行 - 原文:在一个字典中,“键”必须满足如下条件: - 修订:字典中,“键”必须满足如下条件: - 说明:删除“在一个”。 18. 页码:074 - 行数:正文,正数第4自然段第2行 - 原文:它独立称为一个语句, - 修订:它独立成为一个语句, - 说明:原句中的“称”修改为“成”。 19. 页码:076 - 行数:正文第2自然段。 - 原文:可以理解为深度拷贝就是复制过程的递归。 - 修订:可以将深度拷贝理解为复制过程的递归,即将容器中的容器也复制。 - 说明:如修订,修改原文表述顺序,并增加一句。 20. 页码:076 - 行数:正文倒数第2自然段 - 原文:使用对象是可变的容器对象,对数字、字符串等没有“拷贝”操作。 - 修订:复制的是容器对象(区别在于一层还是多层),对数字、字符串等没有“拷贝”操作。 - 说明:将原句中的“使用对象是可变的”修改为“复制的是”,并增加“(区别在于一层还是多层)” 21. 页码:089 - 增加“在”字 - 删除“的字词那样” 22. 页码:089 - 行数:正文,正数第2自然段 - 原文:这就好比自然语言中的字词那样,要想然字词能表达某种意思, - 修订:这就好比在自然语言中,要想然字词能表达某种意思, - 说明: 23. 页码:090 - 行数:正文,倒数第1段 - 原文:并且逐个字符进行比较,如果相等,则返回True。如果每个字符串都比较完毕,不等式仍然不成立,则返回False。 - 修订:并且逐个字符进行比较,如果比较关系对于每两个对应字符都成立,则返回True,否则返回False。 - 说明:删除原句中“如果相等…则返回False”,修改为“如果比较关系…返回False”。 24. 页面:092 - 行数:正文,倒数第2自然段 - 原文:它们是Python的内置对象类型。 - 修订:它们是Python的内置对象。 - 说明:删除原文中的“类型”。 25. 页面:093 - 行数:图4-1-1 - 说明:将原图4-1-1用下面的图示替换。 - ![](http://math.itdiffer.com/images/images/2021-2-15/1613367236409-and.png) 26. 页面:094 - 行数:图4-1-2 - 说明:将原图4-1-2用下面的图示替换。 - ![](http://math.itdiffer.com/images/images/2021-2-15/1613367266408-or.png) 27. 页面:094 - 行数:正文,标题“3. not”下第1行 - 原文:Not为“非”运算, - 修订:not为“非”运算, - 说明:将原文中首字母大写的“Not”修改为“not” 28. 页面:095 - 行数:正文,倒数第5自然段 - 原文:e,作为数学常数,是自然对数函数的底数,有时称为欧拉数(Euler's number), - 修订:e,自然常数,也称为欧拉数(Euler's number), - 说明:删除原文“作为数学常数,…,有时”,并替换为“自然常数,也”。 29. 页面:095 - 行数:正文,倒数第2自然段 - 原文:~~这里以math标准库为例,~~演示了import语句的不同使用方式。 - 修订:以上演示了import语句的不同使用方式。 - 说明:删除“这里以math标准库为例,”,并在替换“以上”。 30. 页面:099 - 行数:正文,倒数第3自然段 - 原文:①在“for i in hello: ”中, for是发起循环的关键词,“i in hello”是循环规则。 - 修订:①在“for i in h: ”中, for是发起循环的关键词,“i in h”是循环规则(h = 'hello')。 - 说明:原文中的hello,改为:h。 31. 页面:106 - 行数:正文,倒数第1行 - 原文:【例题4-4-7】有列表mybag = ['glass', 'apple', 'green leaf'], - 修订:【例题4-4-7】有列表mybag = [' glass', ' apple ', 'green leaf '], - 说明:列表中,第一个元素的的单词前面有一个空格;第二个元素单词两边都有空格,第三个元素最后一个单词右边有一个空格。 32. 页面:109 - 行数:正文,正数第4自然段 - 原文:“猜中中止”,……,利用break中止循环 - 修订:“猜中终止”,……,利用break终止循环 - 说明:将“中止”修改为“终止”。 33. 页面:110 - 行数:正文,正数第3行 - 原文:中止循环(break) - 修订:终止循环(break) - 说明:将“中止”修改为“终止”。 34. 页面:114 - 行数:正文,正数第8行 - 原文:⑦通常的函数……,返回一个值(即对象)。 - 修订:⑦通常的函数……,返回一个或多个值(即对象)。 - 说明:将“返回一个值”修改为“返回一个或多个值”。 35. 页面:130 - 它的名称是“装饰器”。 - “装饰器”的作用在面的…… - 它的名称是“装饰器语法糖”。 - “装饰器语法糖”的作用在面的…… 36. - 行数:正文,倒数第2自然段、倒数第1自然段。 - 原文: - 修订: - 说明:删除“语法糖”三个字。 37. 页面:135 - 行数:正文,正数第3行 - 原文:计算列表中整数的平均数和标注差。 - 修订:计算列表中整数的平均数和标准差。 - 说明:原文中的“标注差”修改为“标准差”。 38. 页面:137 - 行数:正文,倒数第5段,第1行。 - 原文:在面向对象程式设计中,类(class)是一种面向对象计算机编程语言的构造, - 修改:在面向对象程序设计中,类(class)是一种面向对象计算机编程语言的构造, - 说明:原文中的“程式”,修改为“程序”。 39. 页面:141 - 行数:第一段代码,注释⑦开始,到本段代码结束 - 修改:将注释⑦以及之后的缩进去掉,变成如下排版样式: ```python def nine_negative_kungfu(self): return "Ya! You have to die" zhangsan = SuperMan("zhangsan") #⑦ print("superman's name is:", zhangsan.name) #⑧ print("superman is:(0-female, 1-male)", zhangsan.gender) #⑨ result = zhangsan.nine_negative_kungfu() #⑩ print("If superman plays nine negative kungfu, the result is:") print(result) ``` 40. 页面:146 - 行数:正文,正数第1行 - 原文:③还是一个赋值语句。所以,这里“修改”变量Foo.lang本质上是引用了另一个对象。 - 修订:③还是一个赋值语句。所以,“属性值修改”可以理解为变量Foo.lang引用了另一个对象。 41. 页面:150 - 行数:正文,正数第5自然段第2行 - 原文:如②所示。当用此示例调用方法的时候,……,如③和④所示。 - 修订:如④所示。当用此示例调用方法的时候,……,如③和②所示。 - 说明:②和④在文中调换位置。 42. 页面:153 - 行数:正文,正数第1自然段和第2自然段。 - 原文:而④用装饰器装饰了……不需要”硬编码“,改为cls.msg的样式。 - 修订:④用装饰器装饰了……,使用cls.msg的样式。 - 说明: - 删除第1自然段 - 第2自然段,删除“而”、“不需要”硬编码””,并将“改为”替换为“使用”。 - 在类Message中定义了类属性msg……于是不得不“并编码 43. 页面:165 - 行数:正文,正数第5自然段 - 原文:大师 Brue Eckel 在上面提到的博客中 - 修订:大师 Bruce Eckel 在上面提到的博客中 - 说明:将 Brue修改为Bruce 44. 页面:183 - 行数:正文,倒数第2行 - 原文:6.9.1 基本**引用** - 修订:6.9.1 基本**应用** - 说明:将原文中的“引用”修改为“应用” 45. 页面:192 - 行数:正文,倒数第2自然段第2行 - 原文:Yield即“生产”“出产”之意, - 修订:yield即“生产”“出产”之意, - 说明:将原来首字母大写改为小写。 46. 页面:193 - 行数:正文,倒数第2自然段第1行 - 原文:最后的结果用以往的函数知识不难理解。 - 修订:用以往的函数知识不难理解最后的结果。 47. 页面:194 - 行数:例题6-11-1 - 原文:请编写一个迭代器函数 - 修订:请编写一个生成器函数 - 说明:将原文中的“迭代器”,修改为“生成器” 48. 页面:199 - 行数:正文,正数第5行 - 原文:换一个方式,能发现一个规律。 - 修订:换个方式,能发现规律。 49. 页面:218 - 行数:正文,倒数第2行 - 原文:一般情况下,如果本地没有安装,pip会随python默然安装上~~,可以通过下列方式完成安装工作~~。 - 修订:一般情况下,pip会随Python默认安装上。如果本地没有安装,可以同通过下列方式安装。 50. 页面:227 - 行数:表5-2-1的第6行 - 原文:请求一个不存在的字典关键字 - 修订:请求一个不存在的字典的键 - 说明:将原文中的“关键字”修改为“的键”。 51. 页面:230 - 行数:正文,正数第3自然段第2行 - 原文:所谓处理多个异常,是可以允许捕获不同的异常,由不同的except子句处理。 - 修订:所谓处理多个异常,即捕获不同的异常,并由不同的except子句处理。