From 0d380a63f162c80e5e4e88972e0fc8d0c5ecf84a Mon Sep 17 00:00:00 2001 From: Xiang Zhang Date: Fri, 21 Jul 2017 21:45:44 +0800 Subject: [PATCH 1/9] fix disscution #46: evluation order --- 08.op_exp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/08.op_exp.md b/08.op_exp.md index 94d60362..b36bae00 100644 --- a/08.op_exp.md +++ b/08.op_exp.md @@ -132,7 +132,7 @@ a *= 3 要注意到 `变量 = 变量 运算 表达式` 会演变成 `变量 运算 = 表达式`。 -## 计算命令[^8] +## 求值顺序[^8] 如果你有一个诸如 `2 + 3 * 4` 的表达式,是优先完成加法还是优先完成乘法呢?我们的高中数学知识会告诉我们应该先完成乘法。这意味着乘法运算符的优先级要高于加法运算符。 From 75f97b2d7c403ccfe7f7e86819d822df45822629 Mon Sep 17 00:00:00 2001 From: Xiang Zhang Date: Fri, 21 Jul 2017 21:48:53 +0800 Subject: [PATCH 2/9] fix disscusion #48: delete it when the program was running --- 16.exceptions.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/16.exceptions.md b/16.exceptions.md index 68e3cc08..9575b6c8 100644 --- a/16.exceptions.md +++ b/16.exceptions.md @@ -1,6 +1,6 @@ # 异常 -当你的程序出现例外情况时就会发生异常(Exception)。例如,当你想要读取一个文件时,而那个文件却不存在,怎么办?又或者你在程序时不小心把它删除了,怎么办?这些通过使用**异常**来进行处理。 +当你的程序出现例外情况时就会发生异常(Exception)。例如,当你想要读取一个文件时,而那个文件却不存在,怎么办?又或者你在程序执行时不小心把它删除了,怎么办?这些通过使用**异常**来进行处理。 类似地,如果你的程序中出现了一些无效的语句该怎么办?Python 将会对此进行处理,**举起(Raises)**[^1]它的小手来告诉你哪里出现了一个**错误(Error)**。 @@ -129,4 +129,5 @@ EOFError [^2]: 此处采用沈洁元译本的翻译。但是在其它教程或有关 Python 的讨论文章中,Handler 大都保留原文而不作翻译,这点需读者知悉。 -[^3]: 原文作 Raising Exceptions,沈洁元译本译作“引发异常”,此处采用更流行的译法。 \ No newline at end of file +[^3]: 原文作 Raising Exceptions,沈洁元译本译作“引发异常”,此处采用更流行的译法。 + From 0f3ed32990d90a33bf84d468746c3c4e9d5e0368 Mon Sep 17 00:00:00 2001 From: Xiang Zhang Date: Fri, 21 Jul 2017 21:50:28 +0800 Subject: [PATCH 3/9] fix discussion #45: no 'variable' occured in original text --- 07.basics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/07.basics.md b/07.basics.md index 4027e360..95961be1 100644 --- a/07.basics.md +++ b/07.basics.md @@ -35,7 +35,7 @@ print('hello world') 一个字面常量(Literal Constants)[^2]的例子是诸如 `5`、`1.23` 这样的数字,或者是如 `这是一串文本` 或 `This is a string` 这样的文本。 -这么称呼这一变量是因为它们是 _字面上的_ [^3]——你用的就是它字面意义上的值或是内容。数字 `2` 总是表示它本身而非其他含义——它是一个 _常量_,因为它的值不能被改变。因此,所有的这些都被称作字面常量。 +用这样的称呼是因为它们是 _字面上的_ [^3]——你用的就是它字面意义上的值或是内容。数字 `2` 总是表示它本身而非其他含义——它是一个 _常量_,因为它的值不能被改变。因此,所有的这些都被称作字面常量。 ## 数字 From b7469c28750652d2142e870aff4a77587587e040 Mon Sep 17 00:00:00 2001 From: Xiang Zhang Date: Fri, 21 Jul 2017 21:53:26 +0800 Subject: [PATCH 4/9] fix discussion #44: we need an editor software where you can type and save --- 06.first_steps.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/06.first_steps.md b/06.first_steps.md index 0d7ea01c..9a2c167d 100644 --- a/06.first_steps.md +++ b/06.first_steps.md @@ -42,7 +42,7 @@ Hello World 当我们希望运行某些程序时,总不能每次都在解释器提示符中输入我们的程序。因此我们需要将它们保存为文件,从而我们便可以多次地运行这些程序。 -要想创建我们的 Python 源代码文件,我们需要在一款能够为你提供输入并储存代码的编辑器软件。一款优秀的面向程序员的编辑器能够帮助你的编写源代码文件工作变得轻松得多。故而选择一款编辑器确实至关重要。你要像挑选你想要购买的汽车一样挑选你的编辑器。一款优秀的编辑器能够帮助你更轻松地编写 Python 程序,使你的编程之旅更加舒适,并助你找到一条更加安全且快速的道路到达你的目的地(实现你的目标)。 +要想创建我们的 Python 源代码文件,我们需要一款能够让你输入并保存代码的编辑器软件。一款优秀的面向程序员的编辑器能够帮助你的编写源代码文件工作变得轻松得多。故而选择一款编辑器确实至关重要。你要像挑选你想要购买的汽车一样挑选你的编辑器。一款优秀的编辑器能够帮助你更轻松地编写 Python 程序,使你的编程之旅更加舒适,并助你找到一条更加安全且快速的道路到达你的目的地(实现你的目标)。 对编辑器的一项最基本要求为 _语法高亮_ ,这一功能能够通过标以不同颜色来帮助你区分 Python 程序中的不同部分,从而能够让你更好 _看清_ 你的程序,并使它的运行模式更加形象化。 @@ -185,4 +185,4 @@ hello world --- -[^1]: 令人印象深刻的《Beginning Perl》一书的作者。——原书注。在本书中,除特别说明的注释外,其余注释均为译者所加。 \ No newline at end of file +[^1]: 令人印象深刻的《Beginning Perl》一书的作者。——原书注。在本书中,除特别说明的注释外,其余注释均为译者所加。 From 74c7320a51590c2adb567da3ea5ec26178ada24f Mon Sep 17 00:00:00 2001 From: Xiang Zhang Date: Fri, 21 Jul 2017 21:59:35 +0800 Subject: [PATCH 5/9] fix associativity translation by choosing the more conventional jargon --- 08.op_exp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/08.op_exp.md b/08.op_exp.md index b36bae00..f4414277 100644 --- a/08.op_exp.md +++ b/08.op_exp.md @@ -167,9 +167,9 @@ a *= 3 使用括号还有一个额外的优点——它能帮助我们改变运算的顺序。同样举个例子,如果你希望在表达式中计算乘法之前应先计算加法,那么你可以将表达式写作 `(2 + 3) * 4`。 -## 关联性[^9] +## 结合性[^9] -运算符通常由左至右相互关联。这意味着具有相同优先级的运算符将从左至右的方式依次进行求值。如 `2 + 3 + 4` 将会以 `(2 + 3) +4` 的形式加以计算。 +运算符通常由左至右结合。这意味着具有相同优先级的运算符将从左至右的方式依次进行求值。如 `2 + 3 + 4` 将会以 `(2 + 3) +4` 的形式加以计算。 ## 表达式 From 2e629bfecc430eddd3c43ea06e8c60235394f610 Mon Sep 17 00:00:00 2001 From: Xiang Zhang Date: Fri, 21 Jul 2017 22:08:11 +0800 Subject: [PATCH 6/9] fix discussion #43: take easier under different settings --- 10.functions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/10.functions.md b/10.functions.md index dcab3951..89a7ff1d 100644 --- a/10.functions.md +++ b/10.functions.md @@ -2,7 +2,7 @@ 函数(Functions)是指可重复使用的程序片段。它们允许你为某个代码块赋予名字,允许你通过这一特殊的名字在你的程序任何地方来运行代码块,并可重复任何次数。这就是所谓的*调用(Calling)*函数。我们已经使用过了许多内置的函数,例如 `len` 和 `range`。 -函数概念可能是在任何不平凡的软件(无论使用的是何种编程语言)中*最*重要的构建块,所以我们接下来将在本章中探讨有关函数的各个方面。 +函数概念可能是在任何复杂的软件(无论使用的是何种编程语言)中*最*重要的构建块,所以我们接下来将在本章中探讨有关函数的各个方面。 函数可以通过关键字 `def` 来定义。这一关键字后跟一个函数的*标识符*名称,再跟一对圆括号,其中可以包括一些变量的名称,再以冒号结尾,结束这一行。随后而来的语句块是函数的一部分。下面的案例将会展示出这其实非常简单: @@ -194,13 +194,13 @@ Python 有一个甚是优美的功能称作*文档字符串(Documentation Stri 函数的第一行逻辑行中的字符串是该函数的 *文档字符串(DocString)*。这里要注意文档字符串也适用于后面相关章节将提到的[模块(Modules)](./11.modules.md#modules)与[类(Class)](./14.oop.md#oop) 。 -该文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束。第二行为空行,后跟的第三行开始是任何详细的解释说明。[^5]在此*强烈建议*你在有关你所有非凡功能的文档字符串中都遵循这一约定。 +该文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束。第二行为空行,后跟的第三行开始是任何详细的解释说明。[^5]在此*强烈建议*你在你所有重要功能的所有文档字符串中都遵循这一约定。 我们可以通过使用函数的 `__doc__`(注意其中的*双下划綫*)属性(属于函数的名称)来获取函数 `print_max` 的文档字符串属性。只消记住 Python 将*所有东西*都视为一个对象,这其中自然包括函数。我们将在后面的[类(Class)](./14.oop.md#oop)章节讨论有关对象的更多细节。 如果你曾使用过 Python 的 `help()` 函数,那么你应该已经了解了文档字符串的用途了。它所做的便是获取函数的 `__doc__` 属性并以一种整洁的方式将其呈现给你。你可以在上方的函数中尝试一下——只需在程序中包含 `help(print_max)` 就行了。要记住你可以通过按下 `q` 键来退出 `help`。 -自动化工具可以以这种方式检索你的程序中的文档。因此,我*强烈推荐*你为你编写的所有不平凡的函数配以文档字符串。你的 Python 发行版中附带的 `pydoc` 命令与 `help()` 使用文档字符串的方式类似。 +自动化工具可以以这种方式检索你的程序中的文档。因此,我*强烈推荐*你为你编写的所有重要的函数配以文档字符串。你的 Python 发行版中附带的 `pydoc` 命令与 `help()` 使用文档字符串的方式类似。 ## 总结 @@ -220,4 +220,4 @@ Python 有一个甚是优美的功能称作*文档字符串(Documentation Stri [^4]: 原文作 VarArgs Parameters,VarArgs 来自于英文“可变的”“自变量(一译变元,台译引数,也可以理解成参数)”两个英文单词的结合,即 **Var**iable **Arg**uments。 -[^5]: 此处指的是以英文撰写的文档字符串内容。 \ No newline at end of file +[^5]: 此处指的是以英文撰写的文档字符串内容。 From 82107b8a877eea915d0cf79c850e83c4507db5be Mon Sep 17 00:00:00 2001 From: Xiang Zhang Date: Fri, 21 Jul 2017 22:11:18 +0800 Subject: [PATCH 7/9] fix discussion #42: remove redundant 'you' --- 09.control_flow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/09.control_flow.md b/09.control_flow.md index a61b863a..1886d18e 100644 --- a/09.control_flow.md +++ b/09.control_flow.md @@ -2,7 +2,7 @@ 截止到现在,在我们所看过的程序中,总是有一系列语句从上到下精确排列,并交由 Python 忠实地执行。如果你想改变这一工作流程,应该怎么做?就像这样的情况:你需要程序作出一些决定,并依据不同的情况去完成不同的事情,例如依据每天时间的不同打印出 '早上好' 'Good Morning' 或 '晚上好' 'Good Evening'? -正如你你可能已经猜测到的那番,这是通过控制流语句来实现的。在 Python 中有三种控制流语句——`if` `for` 和 `while`。 +正如你可能已经猜测到的那番,这是通过控制流语句来实现的。在 Python 中有三种控制流语句——`if` `for` 和 `while`。 ## `if` 语句 From aa282a3bae7c82ea99756c7221ab78645a99b1f1 Mon Sep 17 00:00:00 2001 From: Xiang Zhang Date: Fri, 21 Jul 2017 22:16:58 +0800 Subject: [PATCH 8/9] adopt a more natural utterance --- 13.problem_solving.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/13.problem_solving.md b/13.problem_solving.md index 1010aad8..e0e2b32f 100644 --- a/13.problem_solving.md +++ b/13.problem_solving.md @@ -6,7 +6,7 @@ 我们希望解决的问题如下: -> 我想要一款能为我所有重要的文件创建备份的程序。 +> 我想要一款程序来备份我所有的重要文件。 虽然这是一个简单的问题,但是其中并没有足够的信息有助于让我们开始规划一份解决方案。我们需要进行一些*分析(Analysis)*。例如,我们应该如何指定_哪些_文件是我们需要备份的?它们应该_如何_进行备份?储存到_哪里_? @@ -159,4 +159,4 @@ ---- -[^1]: 原文作 Verbosity,沈洁元译本译作“交互”。 \ No newline at end of file +[^1]: 原文作 Verbosity,沈洁元译本译作“交互”。 From dc023a0b02bfe2ac62f3d4b3416c575a8d81d77a Mon Sep 17 00:00:00 2001 From: Xiang Zhang Date: Fri, 21 Jul 2017 22:32:35 +0800 Subject: [PATCH 9/9] fix discussion #19: the method of base class get and arguments passed in, rather than being passed --- 14.oop.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/14.oop.md b/14.oop.md index 5fafe7de..8ae92821 100644 --- a/14.oop.md +++ b/14.oop.md @@ -169,7 +169,7 @@ how_many = classmethod(how_many) 相反,如果我们_没有_在一个子类中定义一个 `__init__` 方法,Python 将会自动调用基类的构造函数。 -我们会观察到,我们可以通过在方法名前面加上类名作为前缀,再将其传入 `self` 和其余变量中,来调用基类的方法。 +我们会观察到,我们可以通过在方法名前面加上基类名作为前缀,再传入 `self` 和其余变量,来调用基类的方法。 在这里你需要注意,当我们使用 `SchoolMember` 类的 `tell` 方法时,我们可以将 `Teacher` 或 `Student` 的实例看作 `SchoolMember` 的实例。 @@ -198,4 +198,4 @@ how_many = classmethod(how_many) [^5]: 沈洁元译本译作“导出类”。 -[^6]: 此处的类即派生类或子类。 \ No newline at end of file +[^6]: 此处的类即派生类或子类。