《python3.5 从零开始学》随书源码地址:
https://github.com/liuyuzhou/python3.5booksourcecode
《python3.5 从零开始学》 该书目前发现问题勘误如下:
1、p12
图1-16中的 python 打错了,打成 pyhton 了, t和h 位置反了
需更正为 python
2、p25 倒数第三行:
这里使用的是整形
需更改为 这里使用的是整型
3、p37 表2-1 算术运算符中
a/b输出结果为2 更改为 2.0
b%a 输出结果为0 更改为 a%b 输出结果为0
4、p55
从上往下的第二个代码块:
>>>number=[1,2,3,4,5,6,7,8,9,10]
>>>number[-3,-1] 此处错误。 应改为 number[-3:-1]
[8,9]
5、p61 第二段代码,第三行处漏了一行代码
[1,10,'hello',10,1] 这行代码下面需要添加一行代码,代码形式如下:
>>>type(a)
6、p68
错误问题,描述错误:问题
需将该页的 5.insert
insert()方法用于从列表中找出某个值第一个匹配项的索引位置。
更正为:insert()方法用于将对象插入列表。
7、p87
空白(“”)则表示在正数前加上空格。如下输入:
>>> print(('% 5d'%10)+'\n'+('% 5d'%-10))
这个输入需要更改为:
>>> print(('% 5d' % 10)+'\n'+('% 5d' % -10))
8、p88 4.3.2 join()方法对应的第一段代码:
>>> num=[1,2,3,4]
>>> mark.join(num)
这里漏了一句,完整的应该如下:
>>> num=[1,2,3,4]
>>> mark='+'
>>> mark.join(num)
9、
p92 第三行最后一句有错误
原句:指定第3个字符时
更改为:指定第3个参数时
10、p93问题
intab='adfas' 更改为 intab='adefs'
11、P103 5.3.3 fromkeys()方法, 返回结果为字典,而非列表。 需要把列表二字更改为字典。
12、p135
需将第一段代码中的第六行 num -= -1 更改为num -= 1
13、P157 7.6.1 局部变量 代码块 def func() 中, 最后两行代码未缩进。
需更改为:
def func():
x = 100
print(x)
14、
p160 正文倒数第二行中,“要将全局变量变为局部变量,只需在函数体中定义一个和局部变量名称一样的变量即可。”,这部分的描述是有错误的,应该是“要将全局变量变为局部变量,只需在函数体中定义一个和全局变量名称一样的变量即可。”。 局部变量名称一样的变量 更改为 全局变量名称一样
p162 示例代码中
justreturn函数的return语句丢失,应更改为如下:
def justreturn():
print('justreturn函数只写return,不返回具体内容')
return
print结果的语句中丢失了一句,
print('函数noreturn调用结果:',noreturn())
print('函数justreturn调用结果:',justreturn())
print('函数returnval调用结果:',returnval())
需要加上中间那句才能得到打印的结果。
15、书中168页的尾递归函数一般只能递归fact(997),递归深度超过997后,应该会报如下错误:
RecursionError: maximum recursion depth exceeded in comparison
要能测试fact(1000)
需要加入如下设置:
import sys
sys.setrecursionlimit(10000) #例如这里设置深度为一万
16、p187
完整代码块中的get_score 函数中存在代码缩进错误,原来代码如下:
def get_score(self):
return self.__score
if 0<=score<=100:
self.__score = score
else:
print('请输入0到100的数字。')
需要更正为(漏了一个set_score函数)
def get_score(self):
return self.__score
def set_score(self, score):
if 0<=score<=100:
self.__score = score
else:
print('请输入0到100的数字。')
17、p197
stu = Student0('xiaomeng', 95)
这个语句后面漏了一句,不加上后面的执行结果打印不出来
需要修正为:
stu = Student0('xiaomeng', 95)
stu.info()
即加上 stu.info() 这个语句
p200
type(fn)应该更改为 :type(func)
18、
p205
第四个__getattr__中student类中的方法__init__中多了一个name,须去除,不然stu=Student()报错
p207
因为这两者本来就有根本区别 修改为:因为这两者本来就没有根本区别
19、p216
若把a=1/0注释掉或放到b=name下面
需要更改为
若把a=x/y注释掉或放到b=name下面
即把 a=1/0 更改为 a=x/y
20、p234
第4 和 5 点,需要修改
4. fromtimestamp(timestamp[, tz]) 下面的代码块:
import datetime
print('fromtimestamp is:', datetime.datetime.fromtimestamp(time.time()))
这里少了一条语句,需要更改为如下(还需要导入time):
import datetime, time
print('fromtimestamp is:', datetime.datetime.fromtimestamp(time.time()))
5. utcfromtimestamp(timestamp)
import datetime
print('utcfromtimestamp is:', datetime.datetime.utcfromtimestamp(time.time()))
这里同样少了一条语句,需要更改为如下(还需要导入time):
import datetime, time
print('utcfromtimestamp is:', datetime.datetime.utcfromtimestamp(time.time()))
21、p235
7.strftime(format)下
将格式字符串转换为datetime对象。 更正为: 将datetime对象转换为格式字符串。
返回一个datetime对象。 更正为: 返回一个字符串对象。
22、
p238
缺少三个import语句,需添加如下:
import time
import datetime
import calendar
23、
p249
11.3节 示例代码 缺少import语句,需要添加如下:
import re
24、
p250
11.4节 示例代码 缺少import语句,需添加如下:
import re
25、p258
第二部分的代码片段有一个错误
f_name = open(path, 'w')
print('write length:', f_name.write('Hello world!'))
f_name = open(path,'r')
print('read result:', f_name.read())
f_name = open(path, 'a')
print(add length:', f_name.write('welcome!')) ######该行需要修正为:print(add length:', f_name.write('\nwelcome!'))
f_name = open(path,'r')
print('read result:', f_name.read())
26、
p263
12.3.2 按行操作 一节下的代码,需更改如下:
if not c_str: 更改为:if not line:
按照第295页的代码发送邮件,显示554错误,根据https://www.cnblogs.com/testyao/p/5558810.html的说法,把message['From']=Header("邮件测试",'utf-8')和message['To']=Header("测试",'utf-8')改为message['From']='发件人地址'和message['To']=‘收件人地址’ 就成功了。
27、
p306
正文第一行
本章主要讲述了正则表达式的相关知识 需要更改如下:
本章主要讲述了邮件的相关知识
28、
p331
数据库操作 目录下将
在系统上已经安装了Python PyMySQ模块。
更改为 在系统上已经安装了Python PyMySQL模块。
即把语句中的 PyMySQ 更改为 PyMySQL
这些为目前发现的问题,还望广大读者在阅读过程中帮忙指出自己所发现的问题,不胜感激。