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))