Python大学实用教程#

简介#

本书面向零基础起点的学习者,以面向对象开发思想为核心,讲授Python语言的基本语法及其应用。全书共9章,包括编程语言的基础知识、Python开发环境的配置、Python内置对象类型、基本运算和语句、函数、类、模块和包、异常处理、读写文件。通过这些内容的学习,读者能够掌握Python的基础知识,并在学习过程中通过实例学习如何运用基础知识。

本书每章都配有矢量的习题,习题以编程实践为导向,学习者通过练习能够加深对基础知识的理解,并且初步体会到编程实践对大数据知识和能力的要求。

购买#

  • 各大电商平台有售

  • 电子工业出版社天猫旗舰店

在线资源#

源码和 PPT#

以下代码仓库中包括本书的所有源码、习题答案以及供教学参考的PPT

https://github.com/qiwsir/PythonCourse

如果上述仓库不能访问,也可以通过如下方式下载同样内容。

链接: https://pan.baidu.com/s/149sTH9kS0QY6ZMv1KBVsqA 提取码: kjoq

辅助文章#

在我的微信公众号【老齐教室】上发布了很多关于Python编程语言的文章,供参考。

请阅读:Python编程文章汇总

视频课程#

与本书相关的视频课程(注意:本视频课程不是本书标配,仅向读者推荐选用

Python零基础入门到实践

勘误与修订#

相关术语说明:

  • 正文:不包含代码部分的文字内容

  • 正数:即从页面顶部开始向下计数

  • 倒数:即从页面底部开始向上计数

  • 原文:即原来的叙述。如果针对原来内容有修改,则用删除符号(删除符号)标示。

  • 修订:即相应内容修改之后的最终效果

  • 说明:对所修改内容的说明


版次: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表示。

  1. 页码:030

    • 行数:正文,正数第4段第1行

    • 原文:上面这种提问,在数学中或许容易回答,

    • 修订:此问题,在数学中或许容易回答,

    • 说明:将“上面这种提问”修改为“此问题”。

  2. 页码:039

    • 行数:正文,正数第2行

    • 原文:想让计算机能够处理字符,也要如此处理,必须把字符与二进制的为(bit)之间建立起一个对应关系,这种对应关系被称为“字符编码”。

    • 修订:想让计算机能够处理字符,也要如此,必须将字符与二进制的为(bit)之间建立起对应关系,这种对应关系称为“字符编码”。

    • 说明:删除原来的“处理”、“一个”、“被”,并将原句中的“把”修改为“将”。

  3. 页码:041

    • 增加“表象上看”

    • 删除“函数”、“函数”

    • 增加:实质上…实例(对此句…内容)。

  4. 页码:041

    • 行数:正文,正数第1行

    • 原文:尽管是数字,….,变成了字符串。这种由数字组成的字符串可以通过int函数和str函数实现相互间的类型转化。

    • 修订:尽管是数字,….,变成了字符串。表象上看,这种由数字组成的字符串可以通过int和str实现相互间的类型转化,实质上,int(‘250’)是以字符串“250”为参数创建一个整数类型实例(对此句的理解请参阅本书第6章内容)。

    • 说明:

  5. 页码:044

    • 行数:正文,倒数第2行

    • 增加一段:请思考并尝试:len(“大学”)的返回值是多少?在此基础上进一步体会帮助文档的说明。

    • 说明:在“4. In:判断元素是否存在其中”前面增加上述内容,并单独一个段落。

  6. 页码:052

    • 行数:正文,正数第2行

    • 原文:2. 分隔和组合

    • 修订:2. 分割和组合

    • 说明:将原文中的“隔”修改为“割”。

  7. 页码:067

    • 行数:正文,倒数第4自然段,第1行

    • 原文:在一个字典中,“键”必须满足如下条件:

    • 修订:字典中,“键”必须满足如下条件:

    • 说明:删除“在一个”。

  8. 页码:074

  • 行数:正文,正数第4自然段第2行

  • 原文:它独立称为一个语句,

  • 修订:它独立成为一个语句,

  • 说明:原句中的“称”修改为“成”。

  1. 页码:076

  • 行数:正文第2自然段。

  • 原文:可以理解为深度拷贝就是复制过程的递归。

  • 修订:可以将深度拷贝理解为复制过程的递归,即将容器中的容器也复制。

  • 说明:如修订,修改原文表述顺序,并增加一句。

  1. 页码:076

  • 行数:正文倒数第2自然段

  • 原文:使用对象是可变的容器对象,对数字、字符串等没有“拷贝”操作。

  • 修订:复制的是容器对象(区别在于一层还是多层),对数字、字符串等没有“拷贝”操作。

  • 说明:将原句中的“使用对象是可变的”修改为“复制的是”,并增加“(区别在于一层还是多层)”

  1. 页码:089

    • 增加“在”字

    • 删除“的字词那样”

  2. 页码:089

    • 行数:正文,正数第2自然段

    • 原文:这就好比自然语言中的字词那样,要想然字词能表达某种意思,

    • 修订:这就好比在自然语言中,要想然字词能表达某种意思,

    • 说明:

  3. 页码:090

    • 行数:正文,倒数第1段

    • 原文:并且逐个字符进行比较,如果相等,则返回True。如果每个字符串都比较完毕,不等式仍然不成立,则返回False。

    • 修订:并且逐个字符进行比较,如果比较关系对于每两个对应字符都成立,则返回True,否则返回False。

    • 说明:删除原句中“如果相等…则返回False”,修改为“如果比较关系…返回False”。

  4. 页面:092

    • 行数:正文,倒数第2自然段

    • 原文:它们是Python的内置对象类型。

    • 修订:它们是Python的内置对象。

    • 说明:删除原文中的“类型”。

  5. 页面:093

    • 行数:图4-1-1

    • 说明:将原图4-1-1用下面的图示替换。

  6. 页面:094

    • 行数:图4-1-2

    • 说明:将原图4-1-2用下面的图示替换。

  7. 页面:094

    • 行数:正文,标题“3. not”下第1行

    • 原文:Not为“非”运算,

    • 修订:not为“非”运算,

    • 说明:将原文中首字母大写的“Not”修改为“not”

  8. 页面:095

    • 行数:正文,倒数第5自然段

    • 原文:e,作为数学常数,是自然对数函数的底数,有时称为欧拉数(Euler’s number),

    • 修订:e,自然常数,也称为欧拉数(Euler’s number),

    • 说明:删除原文“作为数学常数,…,有时”,并替换为“自然常数,也”。

  9. 页面:095

    • 行数:正文,倒数第2自然段

    • 原文:~~这里以math标准库为例,~~演示了import语句的不同使用方式。

    • 修订:以上演示了import语句的不同使用方式。

    • 说明:删除“这里以math标准库为例,”,并在替换“以上”。

  10. 页面:099

    • 行数:正文,倒数第3自然段

    • 原文:①在“for i in hello: ”中, for是发起循环的关键词,“i in hello”是循环规则。

    • 修订:①在“for i in h: ”中, for是发起循环的关键词,“i in h”是循环规则(h = ‘hello’)。

    • 说明:原文中的hello,改为:h。

  11. 页面:106

  • 行数:正文,倒数第1行

  • 原文:【例题4-4-7】有列表mybag = [‘glass’, ‘apple’, ‘green leaf’],

  • 修订:【例题4-4-7】有列表mybag = [’ glass’, ‘ apple ‘, ‘green leaf ‘],

  • 说明:列表中,第一个元素的的单词前面有一个空格;第二个元素单词两边都有空格,第三个元素最后一个单词右边有一个空格。

  1. 页面:109

  • 行数:正文,正数第4自然段

  • 原文:“猜中中止”,……,利用break中止循环

  • 修订:“猜中终止”,……,利用break终止循环

  • 说明:将“中止”修改为“终止”。

  1. 页面:110

  • 行数:正文,正数第3行

  • 原文:中止循环(break)

  • 修订:终止循环(break)

  • 说明:将“中止”修改为“终止”。

  1. 页面:114

  • 行数:正文,正数第8行

  • 原文:⑦通常的函数……,返回一个值(即对象)。

  • 修订:⑦通常的函数……,返回一个或多个值(即对象)。

  • 说明:将“返回一个值”修改为“返回一个或多个值”。

  1. 页面:130

    • 它的名称是“装饰器”。

    • “装饰器”的作用在面的……

    • 它的名称是“装饰器语法糖”。

    • “装饰器语法糖”的作用在面的……

    • 行数:正文,倒数第2自然段、倒数第1自然段。

    • 原文:

    • 修订:

    • 说明:删除“语法糖”三个字。

  2. 页面:135

    • 行数:正文,正数第3行

    • 原文:计算列表中整数的平均数和标注差。

    • 修订:计算列表中整数的平均数和标准差。

    • 说明:原文中的“标注差”修改为“标准差”。

  3. 页面:137

  • 行数:正文,倒数第5段,第1行。

  • 原文:在面向对象程式设计中,类(class)是一种面向对象计算机编程语言的构造,

  • 修改:在面向对象程序设计中,类(class)是一种面向对象计算机编程语言的构造,

  • 说明:原文中的“程式”,修改为“程序”。

  1. 页面:141

  • 行数:第一段代码,注释⑦开始,到本段代码结束

  • 修改:将注释⑦以及之后的缩进去掉,变成如下排版样式:

        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)
    
  1. 页面:146

  • 行数:正文,正数第1行

  • 原文:③还是一个赋值语句。所以,这里“修改”变量Foo.lang本质上是引用了另一个对象。

  • 修订:③还是一个赋值语句。所以,“属性值修改”可以理解为变量Foo.lang引用了另一个对象。

  1. 页面:150

  • 行数:正文,正数第5自然段第2行

  • 原文:如②所示。当用此示例调用方法的时候,……,如③和④所示。

  • 修订:如④所示。当用此示例调用方法的时候,……,如③和②所示。

  • 说明:②和④在文中调换位置。

  1. 页面:153

  • 行数:正文,正数第1自然段和第2自然段。

  • 原文:而④用装饰器装饰了……不需要”硬编码“,改为cls.msg的样式。

  • 修订:④用装饰器装饰了……,使用cls.msg的样式。

  • 说明:

    • 删除第1自然段

    • 第2自然段,删除“而”、“不需要”硬编码””,并将“改为”替换为“使用”。

    • 在类Message中定义了类属性msg……于是不得不“并编码

  1. 页面:165

  • 行数:正文,正数第5自然段

  • 原文:大师 Brue Eckel 在上面提到的博客中

  • 修订:大师 Bruce Eckel 在上面提到的博客中

  • 说明:将 Brue修改为Bruce

  1. 页面:183

  • 行数:正文,倒数第2行

  • 原文:6.9.1 基本引用

  • 修订:6.9.1 基本应用

  • 说明:将原文中的“引用”修改为“应用”

  1. 页面:192

  • 行数:正文,倒数第2自然段第2行

  • 原文:Yield即“生产”“出产”之意,

  • 修订:yield即“生产”“出产”之意,

  • 说明:将原来首字母大写改为小写。

  1. 页面:193

  • 行数:正文,倒数第2自然段第1行

  • 原文:最后的结果用以往的函数知识不难理解。

  • 修订:用以往的函数知识不难理解最后的结果。

  1. 页面:194

    • 行数:例题6-11-1

    • 原文:请编写一个迭代器函数

    • 修订:请编写一个生成器函数

    • 说明:将原文中的“迭代器”,修改为“生成器”

  2. 页面:199

    • 行数:正文,正数第5行

    • 原文:换一个方式,能发现一个规律。

    • 修订:换个方式,能发现规律。

  3. 页面:218

    • 行数:正文,倒数第2行

    • 原文:一般情况下,如果本地没有安装,pip会随python默然安装上~~,可以通过下列方式完成安装工作~~。

    • 修订:一般情况下,pip会随Python默认安装上。如果本地没有安装,可以同通过下列方式安装。

  4. 页面:227

    • 行数:表5-2-1的第6行

    • 原文:请求一个不存在的字典关键字

    • 修订:请求一个不存在的字典的键

    • 说明:将原文中的“关键字”修改为“的键”。

  5. 页面:230

    • 行数:正文,正数第3自然段第2行

    • 原文:所谓处理多个异常,是可以允许捕获不同的异常,由不同的except子句处理。

    • 修订:所谓处理多个异常,即捕获不同的异常,并由不同的except子句处理。