鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[技术交流] 《零基础入门学习Python》勘误帖

[复制链接]
发表于 2018-5-10 19:06:40 | 显示全部楼层
P85页  上数第五行代码   f = open(file_name)   应该为 f = open('record.txt')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-12 08:50:52 | 显示全部楼层
0宇辰 发表于 2018-5-10 19:06
P85页  上数第五行代码   f = open(file_name)   应该为 f = open('record.txt')

书上是对的,那是在定义函数,函数的变量为:file_name
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-14 17:04:39 | 显示全部楼层
p89页,

图8-4下面,
另外 path 模块还提供了一些  ==>  另外 os 模块还提供了一些
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-15 11:07:33 | 显示全部楼层
p100,
倒数第二行,
print('出错啦' + str(reason))      
没有缩进
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-17 07:58:41 | 显示全部楼层
建议小甲鱼百忙当中抽点时间把这些错误校正了,这样也能让后面的人能买到错误少的书,也对得起大家所花的哪一点点钱。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-7-9 18:40:22 | 显示全部楼层
P100
最后一行:
fah = Fahrenheit() 没有缩进。

关于这个例子,我的思考如下:

定义的 Celsius类中:
__get__ 和 __set__ 函数中,不应该是 self.value,应该为 instance.value。
原因是self是描述符类自身的实例。instance 才是描述符拥有者所在的类(即 Temperature )的实例。
value 属性为 Celsius 实例对象所有。而 Temperature 类的实例对象没有属性,逻辑上有些不符合常理。
无论 Temperature 有几个实例,实例本身并没有 cel 和 fah 属性。
测试如下

>>>temp1 = Temperature()
>>>temp2 = Temperature()
>>>temp1.cel
26.0
>>>temp1.fah
78.80000000000001
>>>temp2.cel
26.0
>>>temp1.cel = 36
>>>temp2.cel
36.0
>>>temp1.__dict__
{}
>>>temp2.__dict__
{}
>>>Celsius().__dict__
{'value': 26.0}

建议在Temperature类中定义属性 cel 和 fah 的初始化,仅把 Celsius 和 Fahrenheit 作为一个描述符类,
像 property 一样,仅作为一个工具。就像使用 property()函数一样,理解起来更符合常理。
修改代码如下:

class Celsius:
        def __get__(self,instance,owner):
                return instance.value

        def __set__(self,instance,value):
                instance.value = float(value)

class Fahrenheit:
        def __get__(self, instance, owner):
                return instance.cel * 1.8 + 32

        def __set__(self, instance, value):
                instance.cel = (float(value) - 32) / 1.8



class Temperature:
        def __init__(self,value = 26):
                self.cel = float(value)
                self.fah = self.cel * 1.8 + 32

        cel = Celsius()
        fah = Fahrenheit()

测试如下:

>>>temp1 = Temperature()
>>>temp2 = Temperature()
>>>temp1.cel
26.000000000000007
>>>temp2.cel
26.000000000000007
>>>temp1.cel = 35
>>>temp2.cel
26.000000000000007
>>>temp1.__dict__
{'value': 35.0}
>>>temp2.__dict__
{'value': 26.000000000000007}
>>>Celsius().__dict__
{}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-13 16:41:22 | 显示全部楼层
P45页
"%10d" % 5
"5"
"%-10d" % 5
"5"
实际跑出来
>>> "%10d" % 5
'         5'
>>> "%-10d" % 5
'5         '
对人误导很大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2018-7-28 16:27:41 | 显示全部楼层
p31
5.1.3
name[1],name[3] = name[3],name[1]应该加上括号吧,
(name[1],name[3]) = (name[3],name[1])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-29 07:54:09 | 显示全部楼层
王丶不二 发表于 2018-7-28 16:27
p31
5.1.3
name[1],name[3] = name[3],name[1]应该加上括号吧,

加不加括号都对的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-4 18:11:55 | 显示全部楼层
p126
12.2.4 一元操作符
第二段
“Python支持的一元操作符主要有__neg__()(表示正号行为),__pos__()(定义负号行为)”

这里__neg__()和__pos__()的解释写反了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-18 14:09:13 | 显示全部楼层
本帖最后由 JessiFly 于 2018-8-19 17:13 编辑

p186
倒数第4段第二句
“这个容易,fandall()方法不就是找到所有匹配的内容......”

fandall()应为findall()


p198
14.8.2
第一段
“运行下列命令:
C:\scrapy startproject tutoria”
"tutorial"少写了一个"l"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-11 21:21:20 | 显示全部楼层
我用的是重印的,还没发现,不过不用加空格的地方,就不要加空格
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-16 12:05:31 | 显示全部楼层
空格不要乱加!(感觉这是最重要的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-24 12:22:16 | 显示全部楼层
本帖最后由 55363946 于 2018-11-24 12:23 编辑

3.9.2 浮点型那里
E应该是指底数为10,即1.5 * 10的十一次方,标准的E记法
但是书里写的是指数为10,也就是这样 【(1.5)十次方】11次方,意思就是100000000000个1.5相乘,
意思完全不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-8 09:59:49 | 显示全部楼层
吖编程怎么学 发表于 2017-8-22 16:46
p19页
3.10.2  
3*3==9应该为3**3=9

3**3==3*3*3==27
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-18 12:43:18 | 显示全部楼层
第十二页:倒数第七行,“比如告诉用户当然输入的值。。。。”中的当然应该是当前吧
哈哈,我看书就是这么细致,求鱼币奖励
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-25 10:12:38 | 显示全部楼层
冬雪雪冬 发表于 2016-11-29 20:51
先说2个小问题吧。
P8: 变量为什么不叫“衡量”----应该是“恒量”吧。
P47: 5. max()和6. min(...)应该 ...

2018.1重印这一版里作者已经修订
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-25 10:38:56 | 显示全部楼层
清若安然 发表于 2016-12-4 14:40
13页下面的一个例子:
if guess == secret 和 if guess > secret
中的secret应该是写8才对;secret在15页 ...

2018.1月重印的这一版里没找到作者提到的修改方案:secret=8啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-25 10:41:44 | 显示全部楼层
清若安然 发表于 2016-12-4 14:49
第1页和第5页没有页码;
第5页的例子提示:#p2_1.py , 但倒数第二行保存命名为:p2-1.py,不同是“_”和“ ...

2018重印的那版第1页和第5页还是没有页码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-27 14:10:29 | 显示全部楼层
书中P97页9.2.2中的例子,有两处不对,一是int('abc')会引发ValueError,需要在except语句后再添加此类,还有就是reason变量未定义:
  1. try:
  2.     int('abc')
  3.     sum=1+'1'
  4.     f=open('我是一个不存在的文档.txt')
  5.     print(f.read())
  6.     f.close()
  7. except (OSError,TypeError):
  8.     print('出错了\n错误原因是:'+str(reason))
复制代码


修改后的程序:
  1. try:
  2.     int('abc')
  3.     sum=1+'1'
  4.     f=open('我是一个不存在的文档.txt')
  5.     print(f.read())
  6.     f.close()
  7. except (OSError,TypeError,ValueError) as reason:
  8.     print('出错了\n错误原因是:'+str(reason))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 12:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表