diff --git a/03.2.translator-preface.md b/03.2.translator-preface.md index dd54b823..97d554d9 100644 --- a/03.2.translator-preface.md +++ b/03.2.translator-preface.md @@ -40,8 +40,12 @@ 2017 年 5 月 1 日,进行了错字漏字订正与部分译文重写。依 Nangcr 建议修改了《控制流》一章的部分措辞。依邹鹏、Haruki Kirigaya、Yuki Kiriyama、藍星アキラ、shuven 指正与建议改写了《面向对象编程》一章的部分译文与多处翻译错误。——以上修订体现在 4.04c 版中。 -2017 年 7 月 6 日,进行了错字漏字订正。在 shuizhongyueming 的帮助下修改了《运算符与表达式》《安装》《面向对象编程》章节的错误。在 Leon0824 的帮助下修改了《基础》《函数》《模块》几章的错误。依 cobeeee 指正修改了《翻译》一章的错误。依 Alexander Nie 的指正调整了《函数》章节的部分内容。依 192\*\*\*\*543 指正修改了《第一步》章节的错误。依 薛景老师 指正改正了《关于 Python》章节的错误。依 genkagen 指正改正了《异常》《输入与输出》章节的错误。依 nastydt 指正改正了《面向对象编程》《运算符与表达式》一章的错误。依 wang454 指正改正了某一示例程序的错误。——以上修订体现在 4.05c 版中。 +2017 年 7 月 6 日,进行了错字漏字订正。在 shuizhongyueming 的帮助下修改了《运算符与表达式》《安装》《面向对象编程》章节的错误。在 Leon0824 的帮助下修改了《基础》《函数》《模块》几章的错误。依 cobeee 指正修改了《翻译》一章的错误。依 Alexander Nie 的指正调整了《函数》章节的部分内容。依 192\*\*\*\*543 指正修改了《第一步》章节的错误。依 薛景老师 指正改正了《关于 Python》章节的错误。依 genkagen 指正改正了《异常》《输入与输出》章节的错误。依 nastydt 指正改正了《面向对象编程》《运算符与表达式》一章的错误。依 wang454 指正改正了某一示例程序的错误。——以上修订体现在 4.05c 版中。 2017 年 7 月 28 日,进行了错字漏字订正。依 David Wang 的指正改正了《更多》《迈出下一步》章节的错误。依 薛景老师 指正改成了《第一步》《基础》《运算符与表达式》《控制流》章节的错误。依 Lulu Zeng 指正修改了《面向对象编程》章节的错误。依 LazyWolf Lin 指正与建议修改了《控制流》《函数》章节的错误与措辞。依 Kuno Kuno 指正修改了《面向对象编程》章节的错误。依 Cobeee 指正修改了《本书由来》章节的错误。本次修订得到了 Haruki Kirigaya 的协助,他参与修改了部分上述提到的错误,并指出了其它错误,具体章节包括《第一步》《基础》《运算符与表达式》《控制流》《函数》《解决问题》《面向对象编程》《异常》,在此深表感谢。——以上修订体现在 4.06c 版中。 -2017 年 11 月 1 日,对错字漏字以及误译错译进行了集中修订。依 Lyfeway 指正修改了《数据结构》《面向对象编程》一章的错误。依单行道指正修改了《附录:本书由来》一章的错误。依 Starnight Cyber 指正修改了《基础》一章的错误。依chchuj 指正修改了《面向对象编程》一章的错误。依 YangtseSu 指正修改了《模块》一章的错误。依小陈指正改正了《数据结构》一章的错误。依夜雨指正改正了《函数》一章的错误。在本次修订过程中,来自 Little Train Branch 群组的朋友 Haruka、Haruki Kirigaya、Yuki Kiriyama、藍星アキラ 检查了修订草稿,并对多处修订方案提出了具体的建议,同时还指出了先前尚未发现的错误,在此向他们表示感谢。——以上修订体现在 4.07c 版中。 \ No newline at end of file +2017 年 11 月 1 日,对错字漏字以及误译错译进行了集中修订。依 Lyfeway 指正修改了《数据结构》《面向对象编程》一章的错误。依单行道指正修改了《附录:本书由来》一章的错误。依 Starnight Cyber 指正修改了《基础》一章的错误。依chchuj 指正修改了《面向对象编程》一章的错误。依 YangtseSu 指正修改了《模块》一章的错误。依小陈指正改正了《数据结构》一章的错误。依夜雨指正改正了《函数》一章的错误。在本次修订过程中,来自 Little Train Branch 群组的朋友 Haruka、Haruki Kirigaya、Yuki Kiriyama、藍星アキラ 检查了修订草稿,并对多处修订方案提出了具体的建议,同时还指出了先前尚未发现的错误,在此向他们表示感谢。——以上修订体现在 4.07c 版中。 + +2018 年 2 月 4 日,对错字漏字与错译误译进行了集中修订。依颜、urzeye 指正改正了《基础》一章的错误。依 Cobeee 指正修改了《基础》《控制流》《译者前言》章节的错误,对误记了他的名字深表歉意。依 Shihaotian 的建议调整了《函数》一章中一个示例程序的输出内容。依 Xiaolei Wang 指正改正了《基础》一章的错误。依 ddtyjmyjm 指正改正了《异常》一章的错误。依 whxaing 指正改正了《函数》一章的错误。依 David Jiang 指正改正了《安装》《基础》《运算符与表达式》《模块》《数据结构》《输入与输出》《迈出下一步》《附录:修订历史》章节的错误。依 gooyie 指正改正了《运算符与标表达式》章节的错误,Haruka、Haruki Kirigaya、Yuki Kiriyama、藍星アキラ 参与了有关本修正的讨论,并提供了相关建议。——以上修订体现在 4.08c 版中。 + +同时,由于域名配置问题,从 4.08c 版开始,本书存放域名由 bop.molun.net 迁移至 bop.mol.uno。原域名理论上依旧有效。 \ No newline at end of file diff --git a/05.installation.md b/05.installation.md index cda1df15..4a2111d7 100644 --- a/05.installation.md +++ b/05.installation.md @@ -1,6 +1,6 @@ # 安装 {#installation} -我们在本书中提及“Python 3”时,我们指的是任何大于等于该版本的 [Python {{ book.pythonVersion }}](https://www.python.org/downloads/)。[^1] +我们在本书中提及“Python 3”时,我们指的是任何大于等于 [ {{ book.pythonVersion }}](https://www.python.org/downloads/) 的 Python 发行版。[^1] ## 在 Windows 中安装 diff --git a/07.basics.md b/07.basics.md index 2a41403e..86bdf262 100644 --- a/07.basics.md +++ b/07.basics.md @@ -228,7 +228,7 @@ r"Newlines are indicated by \n" ## 变量 -如果只使用字面常量很快就会让人感到无聊——我们需要一些能够存储任何信息并且也能操纵它们的方式。这便是 _变量(Veriables)_ 登场的时刻。正如其名字所述那般,变量的值是可以变化的,也就是说,你可以用变量来存储任何东西。变量只是你的计算机内存中用以存储信息的一部分。与文字常量不同,你需要通过一些方式来访问这些变量,因此,你需要为它们命名。 +如果只使用字面常量很快就会让人感到无聊——我们需要一些能够存储任何信息并且也能操纵它们的方式。这便是 _变量(Variables)_ 登场的时刻。正如其名字所述那般,变量的值是可以变化的,也就是说,你可以用变量来存储任何东西。变量只是你的计算机内存中用以存储信息的一部分。与文字常量不同,你需要通过一些方式来访问这些变量,因此,你需要为它们命名。 ## 标识符命名 @@ -375,7 +375,7 @@ i = \ i = 5 ``` -在某些情况下,会存在一个隐含的假设,允许你不使用反斜杠。这一情况即逻辑行以括号开始,它可以是方括号或花括号,但不能是结束括号。这被称作 *隐式行连接(Implicit Line Joining)*。你可以在后面当我们讨论[列表(List)](./12.data_structures.md#lists)的章节时了解这一点。 +在某些情况下,会存在一个隐含的假设,允许你不使用反斜杠。这一情况即逻辑行以括号开始,它可以是方括号或花括号,但不能是右括号。这被称作 *隐式行连接(Implicit Line Joining)*。你可以在后面当我们讨论[列表(List)](./12.data_structures.md#lists)的章节时了解这一点。 ## 缩进 diff --git a/08.op_exp.md b/08.op_exp.md index f4414277..f79c1ce4 100644 --- a/08.op_exp.md +++ b/08.op_exp.md @@ -103,8 +103,8 @@ _运算符(Operators)_是进行某些操作,并且可以用诸如 `+` 等 - `x = 2; y = 3; x != y` 返回 `True`。 - `not` (布尔“非”)[^5] - - 如果 x 是 `Ture`,则返回 `False`。如果 x 是 `False`,则返回 `True`。 - - `x = Ture; not x` 返回 `False`。 + - 如果 x 是 `True`,则返回 `False`。如果 x 是 `False`,则返回 `True`。 + - `x = True; not x` 返回 `False`。 - `and` (布尔“与”)[^6] - 如果 x 是 `False`,则 `x and y` 返回 `False`,否则返回 y 的计算值。 @@ -155,7 +155,7 @@ a *= 3 - `+x, -x, ~x`:正、负、按位取反 - `**`:求幂 - `x[index], x[index:index], x(arguments...), x.attribute`:下标、切片、调用、属性引用 -- `(expressions...), [expressions...], {key: value...}, {expressions...}`:显示绑定或数组、显示列表、显示字典、显示设置 +- `(expressions...), [expressions...], {key: value...}, {expressions...}`:表示绑定或元组、表示列表、表示字典、表示集合 我们还没有遇到的运算符将在后面的章节中加以解释。 diff --git a/09.control_flow.md b/09.control_flow.md index 41bcc24c..c8d3a8b8 100644 --- a/09.control_flow.md +++ b/09.control_flow.md @@ -89,9 +89,9 @@ if True: **它是如何工作的** -在这一程序中,我们打印了一*序列*的数字。我们通过内置的 `range` 函数生成这一数字序列。 +在这一程序中,我们打印了一个数字*序列*。我们通过内置的 `range` 函数生成这一数字序列。 -在这里我们所要做的事情是提供两个数字,而 `range` 将会返回一序列的数字,从第一个数字开始,至第二个数字结束。举个例子,`range(1,5)` 将输出序列 `[1, 2, 3, 4]`。在默认情况下,`range` 将会以 1 逐步递增。如果我们向 `range` 提供第三个数字,则这个数字将成为逐步递增的加数。同样举个例子来说明,`range(1,5,2)` 将会输出 `[1, 3]`。要记住这一序列扩展*直到*第二个数字,也就是说,它*不会*包括第二个数字在内。 +在这里我们所要做的事情是提供两个数字,而 `range` 将会返回一个数字序列,从第一个数字开始,至第二个数字结束。举个例子,`range(1,5)` 将输出序列 `[1, 2, 3, 4]`。在默认情况下,`range` 将会以 1 逐步递增。如果我们向 `range` 提供第三个数字,则这个数字将成为逐步递增的加数。同样举个例子来说明,`range(1,5,2)` 将会输出 `[1, 3]`。要记住这一序列扩展*直到*第二个数字,也就是说,它*不会*包括第二个数字在内。 另外需要注意的是,`range()` 每次只会生成一个数字,如果你希望获得完整的数字列表,要在使用 `range()` 时调用 `list()`。例如下面这样:`list(range(5))` ,它将会返回 `[0, 1, 2, 3, 4]`。有关列表的详细解释将会在 [《数据结构》一章](./12.data_structures.md#data-structures)呈现。 @@ -111,7 +111,7 @@ if True: `break` 语句用以*中断*(Break)循环语句,也就是中止循环语句的执行,即使循环条件没有变更为 `False`,或队列中的项目尚未完全迭代依旧如此。 -有一点需要尤其注意,如果你的 *中断* 了一个 `for` 或 `while` 循环,任何相应循环中的 `else` 块都将*不会*被执行。 +有一点需要尤其注意,如果你 *中断* 了一个 `for` 或 `while` 循环,任何相应循环中的 `else` 块都将*不会*被执行。 案例(保存为 `break.py`): diff --git a/10.functions.md b/10.functions.md index ad9589b9..70ecea74 100644 --- a/10.functions.md +++ b/10.functions.md @@ -128,7 +128,7 @@ 在第二次调用函数时,`func(25, c=24)`,由于其所处的位置,变量 `a` 首先获得了值 25。然后,由于命名——即关键字参数——指定,变量 `c` 获得了值 `24`。变量 `b` 获得默认参数值 `5`。 -在第三次调用函数时,`func(c=50, a=100)`,我们全部使用关键字参数来指定值。在这里要注意到,尽管 `a` 在 `c` 之前定义,但我们还是我们在变量 `a` 之前指定了变量 `c`。 +在第三次调用函数时,`func(c=50, a=100)`,我们全部使用关键字参数来指定值。在这里要注意到,尽管 `a` 在 `c` 之前定义,但我们还是在变量 `a` 之前指定了变量 `c`。 ## 可变参数[^4] diff --git a/11.modules.md b/11.modules.md index 6cbab1f8..9634c4b9 100644 --- a/11.modules.md +++ b/11.modules.md @@ -113,7 +113,7 @@ from mymodule import * 这将导入诸如 `say_hi` 等所有公共名称,但不会导入 `__version__` 名称,因为后者以双下划线开头。 -> **警告:**要记住你应该避免使用 import-star 这种形式,即 `from mymodule import * `。 +> **警告:**要记住你应该避免使用 import * 这种形式,即 `from mymodule import * `。 diff --git a/12.data_structures.md b/12.data_structures.md index 192a3b93..1fb067c7 100644 --- a/12.data_structures.md +++ b/12.data_structures.md @@ -40,7 +40,7 @@ Python 中有四种内置的数据结构——_列表(List)、元组(Tuple 接着,我们列表的 `sort` 方法对列表进行排序。在这里要着重理解到这一方法影响到的是列表本身,而不会返回一个修改过的列表——这与修改字符串的方式并不相同。同时,这也是我们所说的,列表是_可变的(Mutable)_而字符串是_不可变的(Immutable)_。 -随后,当我们当我们在市场上买回某件商品时,我们需要从列表中移除它。我们通过使用 `del` 语句来实现这一需求。在这里,我们将给出我们希望从列表中移除的商品,`del` 语句则会为我们从列表中移除对应的项目。我们希望移除列表中的第一个商品,因此我们使用 `del shoplise[0]`(要记住 Python 从 0 开始计数)。 +随后,当我们当我们在市场上买回某件商品时,我们需要从列表中移除它。我们通过使用 `del` 语句来实现这一需求。在这里,我们将给出我们希望从列表中移除的商品,`del` 语句则会为我们从列表中移除对应的项目。我们希望移除列表中的第一个商品,因此我们使用 `del shoplist[0]`(要记住 Python 从 0 开始计数)。 如果你想了解列表对象定义的所有方法,可以通过 `help(list)` 来了解更多细节。 diff --git a/15.io.md b/15.io.md index 0acbc3f2..c1285f34 100644 --- a/15.io.md +++ b/15.io.md @@ -50,7 +50,7 @@ 接下来,我们重新在阅读模式下打开同一个文件。我们不需要特别指定某种模式,因为“阅读文本文件”是默认的。我们在循环中使用 `readline` 方法来读取文件的每一行。这一方法将会一串完整的行,其中在行末尾还包含了换行符。当一个_空_字符串返回时,它表示我们已经到达了文件末尾,并且通过 `break` 退出循环。 -最后,我们最终通过 `close` 关闭了文件。 +最后,我们通过 `close` 关闭了文件。 现在,你可以检查 `poem.txt` 文件的内容来确认程序确实对该文件进行了写入与读取操作。 diff --git a/16.exceptions.md b/16.exceptions.md index 9575b6c8..0da63c95 100644 --- a/16.exceptions.md +++ b/16.exceptions.md @@ -74,7 +74,7 @@ EOFError 在本例中,我们创建了我们自己的异常类型。这一新的异常类型叫作 `ShortInputException`。它包含两个字段——获取给定输入文本长度的 `length`,程序期望的最小长度 `atleast`。 -在 `except` 子句中,我们提及了错误类,将该类存储 `as(为)` 相应的错误名或异常名。这类似于函数调用中的形参与实参。在这个特殊的 `except` 子句中我们使用异常对象的 `length` 与 `atlease` 字段来向用户打印一条合适的信息。 +在 `except` 子句中,我们提及了错误类,将该类存储 `as(为)` 相应的错误名或异常名。这类似于函数调用中的形参与实参。在这个特殊的 `except` 子句中我们使用异常对象的 `length` 与 `atleast` 字段来向用户打印一条合适的信息。 ## Try ... Finally {#try-finally} diff --git a/19.what_next.md b/19.what_next.md index 7a51c7bb..842ea4d2 100644 --- a/19.what_next.md +++ b/19.what_next.md @@ -123,7 +123,7 @@ - 在 .NET 平台上运行的 Python 实现。这意味着你可以在 Python 语言中使用 .NET 的库与类,反之亦然 - [PyPy](http://codespeak.net/pypy/dist/pypy/doc/home.html) - - 用 Python 编写的 Pyhon 实现!这是一项研究项目,旨在于使其能快速且方便的改进解释器,因为解释器本身就是用动态语言编写的了(而不是采用上述三种 C、Java、C# 等动态语言来编写)。 + - 用 Python 编写的 Python 实现!这是一项研究项目,旨在于使其能快速且方便的改进解释器,因为解释器本身就是用动态语言编写的了(而不是采用上述三种 C、Java、C# 等动态语言来编写)。 还有其它诸如 [CLPython](http://common-lisp.net/project/clpython/)——采用 Common Lisp 编写的 Python 实现,和[Brython](http://brython.info/) ,它在 JavaScript 解释器之上实现,意味着你可以使用 Python(而非 JavaScript)编写你的 Web 浏览器(“Ajax”)程序。 diff --git a/22.revision_history.md b/22.revision_history.md index edf76dd4..d178777a 100644 --- a/22.revision_history.md +++ b/22.revision_history.md @@ -64,7 +64,7 @@ - 编写了一个 Python 脚本与 CSS 样式表来改善 XHTML 输出,包括一个功能尚显粗糙的词法分析器,用以为列出的程序自动进行 VIM 式的加亮。 - 0.97 - - 2014 年 2 月 13 日 + - 2004 年 2 月 13 日 - 又一版完全重写后的新版,(再次)采用 DocBook XML。本书已有大量改进——现在更加连贯且更加易读。 - 0.93 diff --git a/README.md b/README.md index ee3d2b36..b2ecbc8b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ 2005 年,**沈洁元**将本书的 1.20 版引进中国,并完成了全本翻译,将本书的译名定为《简明 Python 教程》。2017年,**漠伦**基于原书 4.0 版重新翻译,制作了本版全新译本,并沿用同样的译名。 -本版译本定义为 4.07c 版。最后修订于 2017 年 11 月 1 日。 +本版译本定义为 4.08c 版。最后修订于 2018 年 2 月 4 日。 ## 有关 Python 3 diff --git a/book.json b/book.json index d24d524a..578cbca9 100644 --- a/book.json +++ b/book.json @@ -12,10 +12,10 @@ "pythonVersion": "3.5.1", "sourceUrl": "https://github.com/swaroopch/byte-of-python", "vimBookUrl": "http://vim.swaroopch.com/", - "sctransUrl": "https://bop.molun.net", + "sctransUrl": "https://bop.mol.uno", "translator": "https://molun.net", "transdownloadurl": "https://www.gitbook.com/book/lenkimo/byte-of-python-chinese-edition/", "transsourceurl": "https://github.com/LenKiMo/byte-of-python" } -} +} \ No newline at end of file diff --git a/programs/function_docstring.py b/programs/function_docstring.py index dcfcfb60..d4204f41 100644 --- a/programs/function_docstring.py +++ b/programs/function_docstring.py @@ -1,7 +1,7 @@ def print_max(x, y): - '''Prints the maximum of two numbers.打印两个数值中的最大数。 + '''打印两个数值中的最大数。 - The two values must be integers.这两个数都应该是整数''' + 这两个数都应该是整数''' # 如果可能,将其转换至整数类型 x = int(x) y = int(y) diff --git a/programs/function_docstring.txt b/programs/function_docstring.txt index 1995f796..b4a25ab2 100644 --- a/programs/function_docstring.txt +++ b/programs/function_docstring.txt @@ -1,5 +1,5 @@ $ python function_docstring.py 5 is maximum -Prints the maximum of two numbers. +打印两个数值中的最大数。 - The two values must be integers. + 这两个数都应该是整数