0宇辰 发表于 2018-5-10 19:06:40

P85页上数第五行代码   f = open(file_name)   应该为 f = open('record.txt')

philruan 发表于 2018-5-12 08:50:52

0宇辰 发表于 2018-5-10 19:06
P85页上数第五行代码   f = open(file_name)   应该为 f = open('record.txt')

书上是对的,那是在定义函数,函数的变量为:file_name

ZLIN1024 发表于 2018-6-14 17:04:39

p89页,

图8-4下面,
另外 path 模块还提供了一些==>另外 os 模块还提供了一些

ZLIN1024 发表于 2018-6-15 11:07:33

p100,
倒数第二行,
print('出错啦' + str(reason))      
没有缩进

philruan 发表于 2018-6-17 07:58:41

建议小甲鱼百忙当中抽点时间把这些错误校正了,这样也能让后面的人能买到错误少的书,也对得起大家所花的哪一点点钱。

ostrich2016 发表于 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__
{}

cn19961 发表于 2018-7-13 16:41:22

P45页
"%10d" % 5
"5"
"%-10d" % 5
"5"
实际跑出来
>>> "%10d" % 5
'         5'
>>> "%-10d" % 5
'5         '
对人误导很大

王丶不二 发表于 2018-7-28 16:27:41

p31
5.1.3
name,name = name,name应该加上括号吧,
(name,name) = (name,name)

philruan 发表于 2018-7-29 07:54:09

王丶不二 发表于 2018-7-28 16:27
p31
5.1.3
name,name = name,name应该加上括号吧,


加不加括号都对的

JessiFly 发表于 2018-8-4 18:11:55

p126
12.2.4 一元操作符
第二段
“Python支持的一元操作符主要有__neg__()(表示正号行为),__pos__()(定义负号行为)”

这里__neg__()和__pos__()的解释写反了。

JessiFly 发表于 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"

TCY 发表于 2018-10-11 21:21:20

我用的是重印的,还没发现,不过不用加空格的地方,就不要加空格

TCY 发表于 2018-11-16 12:05:31

空格不要乱加!(感觉这是最重要的)

55363946 发表于 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相乘,
意思完全不一样{:10_256:}

TCY 发表于 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

happy_study 发表于 2018-12-18 12:43:18

第十二页:倒数第七行,“比如告诉用户当然输入的值。。。。”中的当然应该是当前吧
哈哈,我看书就是这么细致,求鱼币奖励

kermill 发表于 2019-4-25 10:12:38

冬雪雪冬 发表于 2016-11-29 20:51
先说2个小问题吧。
P8: 变量为什么不叫“衡量”----应该是“恒量”吧。
P47: 5. max()和6. min(...)应该 ...

2018.1重印这一版里作者已经修订{:5_108:}

kermill 发表于 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啊

kermill 发表于 2019-4-25 10:41:44

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

2018重印的那版第1页和第5页还是没有页码

kermill 发表于 2019-4-27 14:10:29

书中P97页9.2.2中的例子,有两处不对,一是int('abc')会引发ValueError,需要在except语句后再添加此类,还有就是reason变量未定义:
try:
    int('abc')
    sum=1+'1'
    f=open('我是一个不存在的文档.txt')
    print(f.read())
    f.close()
except (OSError,TypeError):
    print('出错了\n错误原因是:'+str(reason))

修改后的程序:
try:
    int('abc')
    sum=1+'1'
    f=open('我是一个不存在的文档.txt')
    print(f.read())
    f.close()
except (OSError,TypeError,ValueError) as reason:
    print('出错了\n错误原因是:'+str(reason))
页: 1 2 [3] 4
查看完整版本: 《零基础入门学习Python》勘误帖