老齐教室

《跟老齐学Python:轻松入门》勘误和修订

说明: 每次印刷,都要对本书进行部分修订,感谢读者对书中错误的指正。

2018年4月第5次印刷

勘误

第199页

  • 位置:正文,第1段第1行
  • 原文:在类Foo中,定义了一个属性lang=”python”,
  • 修改为:在类Foo中,定义了一个属性lang=”Java”,
  • 说明:将原文中的“python”,修改为“Java”

第241页

  • 位置:代码段,倒数第一段

  • 原文:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> x = 10
    >>> try:
    ... x = 1 / 0
    ... except Exception as e:
    ... print(e)
    ... finally:
    ... print(e)
    ... del x
    ...
    integer division or modulo by zero
    del x
  • 修改为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> x = 10
    >>> try:
    ... x = 1 / 0
    ... except ZeroDivisionError as e:
    ... print(e)
    ... finally:
    ... print("del x")
    ...
    division by zero
    del x

第268页

  • 位置:正文,倒数第1段第1行

  • 原文:不要认为堆里面只能放数字,……,比较好理解。

  • 修改说明::删除这句话。同时删除269页正数的6行代码(小标题4. heapreplace()之前的代码)。即下面的内容删除

    1
    2
    3
    heap.heappush(h1, 'q')
    ……
    [2, 3, 5, 4, 9, 6, 8, 9, 'q', 'w']

修订

2018年1月第4次印刷

勘误

第31页

  • 位置:正文,倒数第四行
  • 原文:严格地说,…, 这种类型用str表示,
  • 修改为:严格地说,…, 用str表示,
  • 修改说明:删除“这种类型”

第31页

  • 位置:正文,倒数第二行(即倒数第一自然段)
  • 原文:字符串和前面讲过的数字一样,都是对象的类型,或者说都是Python数据类型。当然,表示方式还是有区别的。
  • 修改说明:删除这一段内容

第32页

  • 位置:正文,正数第一行

  • 原文:无论使用单引号还是双引号,结果都是一样的,都是字符串

  • 修改为:

    无论使用单引号还是双引号,都是字符串——引号一定要成对出现。仔细观察下面的操作,同样的250,有很大不同。

第32页

  • 位置:正文,正数第二段第一行
  • 原文:仔细观察,同样是250,一个没有放在引号里面,…
  • 修改为:250,一个没有放在引号里面,…

第41页

  • 位置:正文,倒数第三行
  • 原文:字符串是一种序列,所有序列都有如下基本操作,这是序列共有的操作。
  • 修改为:字符串是一种序列,所有序列都有如下基本操作,下面的内容可以理解为以字符串为例研习序列的操作。

第79页

  • 位置:正文,正数第五行
  • 原文:用这样的方法可以向一个字典类型的对象中增加“键值对”,也可以说是增加数值
  • 修改说明:删除这一行,即这一自然段。

第79页

  • 位置:正文,正数第六行

  • 原文:那么,增加了值之后,字典还是原来的字典吗?要同样探讨一下字典是否能够原地修改(列表可以,列表是可变的;字符串和元组都不行,它们是不可变的)。

  • 修改为:

    那么,增加了值之后,字典还是原来的对象吗?

    已经学习过列表,它是一种可变对象,能实现原地修改。刚才的操作,似乎也在说明字典亦然。

第79页

  • 位置:正文,正数第八行
  • 原文:实验表明,字典可以原地修改,它是可变
  • 修改为:操作证实,字典可以原地修改,它是可变对象

第79页

  • 位置:正文,正数第十行
  • 原文:利用元组建构字典,
  • 修改为:利用dict()函数建构字典,

第126页

  • 位置:代码,倒数第一段
  • 原文:
1
2
while 年龄大约60岁: ————>当年龄大约60岁的时候
退休 ————>范式符合上述条件就执行的动作
  • 修改为:
1
2
while 年龄大约60岁: ————>当年龄大约60岁的时候
退休 ————>范式符合上述条件就执行的动作
  • 修改说明:“退休”相对最左边缩进四个英文半角的空格。

第148页

  • 位置:代码,倒数第一段,第二行

  • 原文:

    1
    2
    def 函数名(参数1, 参数2, ..., 参数n):
    函数体(语句块)
  • 修改为:

1
2
def 函数名(参数1, 参数2, …,参数n)
函数体(语句块)
  • 修改说明:此行相对最左缩进4个英文半角的空格。

第150页

  • 位置:正文,倒数第二行

  • 原文:3.1.4 调用函数

  • 修改说明:此标题的字号与3.1.3的标题字号一样大。现在字号偏小。

第189页

  • 位置:正文,正数第五段

  • 原文:在本书中,…,它也是对象。凡是对象,都具有属性和方法。而属性是可以修改或者增加、删除的。既然如此,对刚才的类A或者类Girl,都可以对目前其有的属性进行修改,也可以增加新的属性。

  • 修改为:

    在本书中,…,它也是对象。请回忆以前学习过的知识,不论字符串、列表、函数,都是对象,用dir()函数都可以查看它们的属性和方法。“类”——作为一个对象——当然也不例外。

    1
    2
    >>>dir(A)
    ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'x']

    观察上述结果,类A这个对象的属性x赫然在其中。

    对象的属性都可以进行修改、增加和删除操作,类A这个对象当然还是不例外的。

  • 修改说明:上面修改之后内容中,增加了dir(A)的操作代码。操作代码显示之后增加两个自然段的内容。然后,后面接189页代码正数第二段中的”>>> A.y =9”部分的代码操作。

第189页

  • 位置:正文,正数第六段

  • 原文:对类A增加了一个新的属性,并且赋给了值,然后删除一个已有属性。

  • 修改为:

    对类A增加了一个属性,若用dir(A)查看,一定也能看到它,读者不妨试试。

    删除类的属性,就是用del。

  • 修改说明:删除原文的内容(该自然段),替换为“修改为”中的两个自然段的内容。

第189页

  • 位置:正文,倒数第三段

  • 原文:也可以修改当前已有的类属性的值。

  • 修改为:

    读者如果使用dir(A)再次查看属性,会发现,经过上述操作之后就只有属性y了,属性x已经不见了。

    也可以修改当前已有类属性的值。

  • 修改说明:在原文所示自然段前面增加一个自然段,内容在“修改为”中标识出了。

第189页

  • 位置:正文,倒数第二段

  • 原文:breast是我们在类Girl中自己定义的属性,其实在一个类建立的同时,Python也让这个类具有了一些默认的属性。可以用我们熟知的dir()来查看类的所有属性(也包括方法)。

  • 修改为:breast是在类Girl中定义的属性,类Girl与类A一样,是类,也是对象,所以dir()同样应用。

第190页

  • 位置:正文,正数第二段

  • 原文:下面列出了类的 … 一一查看。

  • 修改为:下面列出了类的 … 一一查看(C表示类名称,即类对象)

  • 修改说明:在本段后面增加“修改为”所标识的内容。

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

关注微信公众号,读文章、听课程,提升技能