Python程序设计基础与实践(预览版)-勘误表

Python程序设计基础与实践(预览版)-勘误表

Posted by xuepro on October 18, 2018

1.1.2节

“8×1024×1024×1024个元器件就可以表示1024MB,即1GB” 应该是“8×1024×1024×1024个元器件就可以表示1024MB,即1GB”

1.5.1节的 “十进一”应该是“十进一”

1.3.2 节的 “tom”应该是”atom”

文中的”python”换成了首写字母大写的“Python”。代码部分仍然是小写。

同样,文字叙述中的”lambda”改成了“Lambda”。(代码中仍然应该是小写字母开头)

2.1.1节的*应该是*

2.7.2 倒数第3行,代码缺少缩进!

2.9习题的34题“绝对值小于10-5的-5应该是指数。

3.1.3的“形式参数(Parameters) (简称形参)”的引号应该是汉字的引号。

3.5 总结的“lmbda”应该是“Lambda”

4.3.2 “表示字符’的 '称为 转义字符” 应该是“表示的字符 '称为 转义字符”

图13.1和13.4改变了一下

3.4.4 ““(上面的)N-1”多了引号。应该改为:

 (上面的)N-1个盘子的移动(从A柱借助于C柱移到B柱)  最大盘子的移动: 直接从A柱移到C柱  N-1个盘子的移动(从B柱借助于A柱移到C柱)

5.6.1 “更新数据并处理碰撞collosion()”的collosion应该是collision。

5.3.6 “从战机类Fighter派生出Enemy类和Boss类分别表示地方普通战机和大Boss战机”其中的”表示地方”应该是“表示敌方”。

“图5-11 敌我战机都克发射子弹”的“都克”应该是“都可”

7.2.2节: “不是一个整数而不是一个字符时”应该是“不是一个整数而是一个字符时”

习题7.4 第10题:“print(“Two”)”应该是“print(“TWO”)”

8.4其中的1的“只是在类的最后添加了一行代码“salary = property(getsalary,setsalary)”。” 其中“(getsalary,setsalary)”应该是“(get_salary,set_salary)”

9.2.2节上面第5行的”将元祖形式”应该是“将元组形式”、“转换为一个性如”应该是“转换为一个形如”

10.1.1 节下面第10行: “he is arat”应该是“he is a rat”

15.2 “selve”应该是”shelve”

1.5.2节的表1-3后面内容修改为:

表1-3是UniCode编码点和UTF-8编码的关系。
表1-3 UniCode编码点和UTF-8编码关系
UniCode(十六进制形式)	UTF-8(二进制形式)
0000 0000-0000 007F	0xxxxxxx
0000 0080-0000 07FF	110xxxxx 10xxxxxx
0000 0800-0000 FFFF	1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF	11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
比如汉字的“中”的十六进制表示是“4E2D”,其二进制形式是“0100 1110  0010 1101”,其UniCode的值位于第3行的范围里,因此,其UTF-8编码占用的是3个字节,只要将其二进制位从后往前填入相应的’x’的位置就得到了其对应的UTF-8编码:11100100 10111000 10101101。

表1-4是字符A和汉字'中'的UniCode编码点及UTF-8编码。 
表1-4 字符A和汉字'中'的UniCode编码点及UTF-8编码
字符	ASCII	UniCode	UTF-8
A	01000001	00000000 01000001	01000001
中	无	01001110 00101101	11100100 10111000 10101101

习题1.6

1)	标题后应该用’2.’而不是’2、’
另外习题3、4内容修改为:
3.	将十进制整数765431转换为十六进制,在十六进制形式下,如何将该数的二进制的第17位设置为1?最后写出对应的二进制形式。
4.	请在网上查询一下换行符、回车符、制表符和汉字‘汉’的Unicode编码点(值),然后根据表1-4写出其对应的UTF-8的编码。

4.1.3节: “浮点数在计算机硬件中被实现为二进制分数”这句话修改为“浮点数在计算机硬件中是用二进制近似表示的“

4.2.6 “Python的一切的都是对象”应该是“Python的一切都是对象” “list的pop()方法…”这段文字最后缺少了句号 “list的remove()方法删除特定的元素…”这段文字最后缺少了句号

P142页: “可以用过切片操作(slicing operator) 可访问一个范围里的多个元素”应为“可以用切片操作(slicing operator) 访问一个范围里的多个元素”

“图4-1 list对象的内存布局示意图”修改为“图4-1 list对象alist的内存布局示意图

4.7.3 “如果下一个状态不是最终状态,则最为新的当前状态”的“最为”修改为“作为”

习题4.8的47题:” 介绍了一个介绍了一个”应为” 介绍了一个”。 如图是建筑物”应该为“如图10-4是建筑物”

5.2.1 “可以在Employee的这个方法中认为地添加一条打印语句:”应该是“人为地” 5.2.3 “针对不同类的实例(对象)产生不同”其中的圆括号应该是中文的圆括号 5.2.4 代码的注释中“实际上未该实例创建了一个属性”应该是“为” 5.2.5 “但对如e2的实例属性name没有任何影响”不打通顺,修改为“但对其他实例如e2的实例属性name没有任何影响”

5.2.6

“尽管执行了“e.__salary = 8000.0 ”,但e.printInfo()的输出信息显示的salary仍然是7360.5,”其中的数字应该是7000和5000。“为什么又显示8000.0呢?”的数值也是7000。即:
“尽管执行了“e.__salary = 7000 ”,但e.printInfo()的输出信息显示的salary仍然是5000,说明不能直接访问修改对象的私有变量。然而最后一句的“print(e.__salary)” 为什么又显示7000呢?”

表5.1中的”In”应该是小写字母开头的“in”

5.2节最后的总结部分中“在创建一个类的对象(例)”应该是“(实例 )”

5.3.4 “称为“属性解析””应该用粗体: “称为“属性解析””

5.3.4 “只要调用上述函数就可以直到这个MRO线形序列。”应该是“得到”

5.3.4 总结:

“而依赖的类称为“父类””应该是“而其依赖的类称为“父类”” “遵循“深度优先,自右向左”的次序“应该是”“遵循“深度优先,自左向右”的次序”

5.4.1 修改了下面第二行: “ e.Print() 输出: Li Ping ” 将“输出”修改为“上述代码将print_name(self)函数绑定为e的实例方法。输出结果:”

5.4.2 ““为了使所有对象具有同一的属性”的“同一的”修改为“统一的”

5.5.2节,“这个一个结点包含2个指向左、右孩子结点的引用的表示法叫做“二叉链表”。”其中的““这个一个”修改为“这种一个”、“二叉链表”。设置为成粗体

5.5.3 节中每个代码片断的第一行注释有误:

#遍历T为根的左子树 def traverse_pre(T): 其中的注释应该是“# 先序遍历T为根的二叉树”。

#遍历T为根的左子树 def traverse_post(T): 其中的注释应该是“# 后序遍历T为根的二叉树”。

#遍历T为根的左子树 def traverse_mid(T): 其中的注释应该是“# 中序遍历T为根的二叉树”。

#遍历T为根的左子树 def depth(T): 其中的注释应该是“#后序遍历求T的深度(高度)”。

#在T为根的左子树插入x def insertBST(T,x): 其中的注释应该是“#在T为根的二叉树插入x”。

5.5.3 节: “加入中序遍历函数的名字叫做iot”的“加入”应该是“假如”

5.5.4 “如图5-12是通过不管插入数据元素”应该是“如图5-12是通过不断插入数据元素”

5.7习题的11题:“class Rectangle(Triangle):”应该是“class Triangle (Polygon):”

6.1.2 “该函数进行将对象以单行格式输出,” 应该为“该函数将对象以单行格式输出,” “例如下面代码中key=1的值输出在单行,而key=2的值则以多行输出。”修改为“例如下面代码中的list对象data的前2个元素以单行形式输出,而第3个元素则以多行形式输出。” “pprint()就可以输出这之类的对象”改为“pprint()就可以输出该类对象”

6.2 开头的应该用中文的圆括号():  打开(open)一个文件  读(read)写(write)文件内容  关闭(close)这个文件

6.2.1 “频繁读写外部文件的小数据”改为“频繁地直接读写外部设备上的数据”,“大块数据读写到外部文件中”改为“大块数据读写到外部设备”。 “清空为0字节”改为“清空为0个字节”。 “’r + b’打开文件而不清空。”改为“’r + b’打开但不清空文件。”

表6-1字体改为“小六”

6.2.3 的注意部分: “即即f.read()”应为“即f.read()”

第7章第一行 “编程程序时”应为“编写程序时”

7.2.2上面第6行“此时,出现了异常!”应为“出现了异常!”

7.3.1 “用 print输出”少了函数的圆括号,应为“用 print()输出”。在该小节的代码后面总结里: “下次又要测试这个函数时,必须重新添加print语句”的print也少量圆括号。

7.3.2 “还可以在断言的后面用逗号,根一个表达式”该句的“根”应该是“跟”

7.3.4 “调试工具有:Pyflakes, pylint, PyChecker and pep8等”应为“调试工具有:Pyflakes、pylint、PyChecker 、pep8等” 最后一行语句“如何用pdb调试Python程序?可观看作者网站提供的视频课程。”修改为“建议用更专业的集成开发环境如PyCharm调试python程序。”

习题7.4 的第2题、第3题、第11题删除!

9.1.1 “将用pdf关脸的阅读程序”应为“将用pdf关联的阅读程序”

12.1.5 “高hight”应为“高height”

12.1.6节第2行: “这个时间处理函数”应为“这个事件处理函数”

12.1.10节: “如如12-10所示”应为“如图12-10所示”

13.2.2 的最后“服务器程序有2曾层循环”应为“服务器程序有2层循环”

13.4.2 的第一行“基于TCPServer的服务器程代码:”应为“基于TCPServer的服务器程序代码:”

13章标题应该为“第13章”

13章的第3行: “通信双方的编地问题”应为“通信双方的编址问题”

13.1 “套接字家族可以使AFUNIX或者AFINET”应为“套接字家族可以使AF_UNIX或者AF_INET”

14.1.4 的代码注释“# 构造一个openner对象”为“# 构造一个opener对象”,“# 安装 openner对象”为“# 安装 opener对象”

14.2.2 的代码“?P给3个分组分别起来名字”应为“?P给3个分组分别一个名字”

14.2.1 “数据加密:SSL、TLS和 STARTTLS”的第一行: “通信双方之间建议一个”应为“通信双方之间建立一个”

15.1 第一段“对于带load()函数”应为“对于load()函数”

第15章标题多了一个句号:“第15章.”应为“第15章”

习题8.7第7题插入了新的题目。


支付宝打赏 微信打赏

您的打赏是对我最大的鼓励!