Skip to content

Commit 0fcd9de

Browse files
committed
F
Correct Typos.
1 parent 8853797 commit 0fcd9de

File tree

7 files changed

+29
-29
lines changed

7 files changed

+29
-29
lines changed

15.io.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 输入与输出 {#io}
22

3-
有些时候你的程序会与用户产生交互。举个例子,你会希望获取用户的输入内容,并打印出一些返回的结果。我们可以分别通过 `input()` 函数与 `print` 函数来实现这一需求。
3+
有些时候你的程序会与用户产生交互。举个例子,你会希望获取用户的输入内容,并向用户打印出一些返回的结果。我们可以分别通过 `input()` 函数与 `print` 函数来实现这一需求。
44

55
对于输入,我们还可以使用 `str` (String,字符串)类的各种方法。例如,你可以使用 `rjust` 方法来获得一个右对齐到指定宽度的字符串。你可以查看 `help(str)` 来了解更多细节。
66

@@ -18,15 +18,15 @@
1818

1919
**它是如何工作的**
2020

21-
我们使用切片功能翻转文本。我们已经了解了我们可以通过使用 `seq[a:b]` 来从位置 `a` 开始到位置 `b` 结束来[对序列进行切片](./12.data_structures.md#sequence) 。我们同样可以提供第三个参数来确定切片的_步长(Step)_。默认的步长为 `1`因为它会返回文本的连续步长。如果给定一个负数步长,如 `-1`,将返回翻转过的文本。
21+
我们使用切片功能翻转文本。我们已经了解了我们可以通过使用 `seq[a:b]` 来从位置 `a` 开始到位置 `b` 结束来[对序列进行切片](./12.data_structures.md#sequence) 。我们同样可以提供第三个参数来确定切片的_步长(Step)_。默认的步长为 `1`它会返回一份连续的文本。如果给定一个负数步长,如 `-1`,将返回翻转过的文本。
2222

2323
`input()` 函数可以接受一个字符串作为参数,并将其展示给用户。尔后它将等待用户输入内容或敲击返回键。一旦用户输入了某些内容并敲下返回键,`input()` 函数将返回用户输入的文本。
2424

25-
我们获得文本并将其进行翻转。如果原文本与翻转后的文本相同,则这一文本是[回文](http://en.wiktionary.org/wiki/palindrome)
25+
我们获得文本并将其进行翻转。如果原文本与翻转后的文本相同,则判断这一文本是[回文](http://en.wiktionary.org/wiki/palindrome)
2626

2727
### 作业练习
2828

29-
要想检查文本是否属于回文需要忽略其中的标点、空格与大小写。例如,“Rise to vote, sir.”是一段回文文本但是我们现有的程序不会这么认为。你可以改进上面的程序以使它能够识别这段回文吗?
29+
要想检查文本是否属于回文需要忽略其中的标点、空格与大小写。例如,“Rise to vote, sir.”是一段回文文本,但是我们现有的程序不会这么认为。你可以改进上面的程序以使它能够识别这段回文吗?
3030

3131
如果你需要一些提示,那么这里有一个想法……[^1]
3232

@@ -44,19 +44,19 @@
4444

4545
**它是如何工作的**
4646

47-
首先,使用内置的 `open` 函数并指定文件名以及我们所希望的打开模式来打开一个文件。其打开模式可以说阅读模式`'r'`),写入模式(`'w'`)和追加模式(`'a'`)。我们还可以选择是通过文本模式(`'t'`)还是二进制模式(`'b'`)来读取、写入或追加文本。实际上还有其它更多的模式可用,`help(open)` 会给你有关它们的更多细节。在默认情况下,`open()` 会将文件视作文本(**t**ext)文件,并以阅读(**r**ead)模式打开它。
47+
首先,我们使用内置的 `open` 函数并指定文件名以及我们所希望使用的打开模式来打开一个文件。打开模式可以是阅读模式`'r'`),写入模式(`'w'`)和追加模式(`'a'`)。我们还可以选择是通过文本模式(`'t'`)还是二进制模式(`'b'`)来读取、写入或追加文本。实际上还有其它更多的模式可用,`help(open)` 会给你有关它们的更多细节。在默认情况下,`open()` 会将文件视作文本(**t**ext)文件,并以阅读(**r**ead)模式打开它。
4848

4949
在我们的案例中,我们首先采用写入模式打开文件并使用文件对象的 `write` 方法来写入文件,并在最后通过 `close` 关闭文件。
5050

51-
接下来,我们重新在阅读模式下打开同一个文件。我们不需要特别制定某种模式因为“阅读文本文件”是默认的模式。我们在循环中使用 `readline` 方法来读取文件的每一行。这一方法将会一串完整的行,其中在行末尾还包含了换行符。当一个_空_字符串返回时,它表示我们已经到达了文件末尾,并且通过 `break` 退出循环。
51+
接下来,我们重新在阅读模式下打开同一个文件。我们不需要特别指定某种模式,因为“阅读文本文件”是默认的。我们在循环中使用 `readline` 方法来读取文件的每一行。这一方法将会一串完整的行,其中在行末尾还包含了换行符。当一个_空_字符串返回时,它表示我们已经到达了文件末尾,并且通过 `break` 退出循环。
5252

53-
在最后,我们最终通过 `close` 关闭了文件。
53+
最后,我们最终通过 `close` 关闭了文件。
5454

55-
现在,检查 `poem.txt` 文件的内容来确认程序确实对该文件进行了写入与读取操作。
55+
现在,你可以检查 `poem.txt` 文件的内容来确认程序确实对该文件进行了写入与读取操作。
5656

5757
## Pickle[^2]
5858

59-
Python 提供了一个叫作 `Pickle` 的标准模块,通过它你可以将_任何_纯 Python 对象存储到一个文件中,并在稍后把它拿回来。这叫作*持久地(Persistently)*存储对象。
59+
Python 提供了一个叫作 `Pickle` 的标准模块,通过它你可以将_任何_纯 Python 对象存储到一个文件中,并在稍后将其取回。这叫作*持久地(Persistently)*存储对象。
6060

6161
案例(保存为 `io_pickle.py`):
6262

@@ -74,7 +74,7 @@ Python 提供了一个叫作 `Pickle` 的标准模块,通过它你可以将_
7474

7575
## Unicode[^3]
7676

77-
到现在,当我们编写或使用字符串时,读取或写入某一文件时,我们只使用到简单的英语字符
77+
截止到现在,当我们编写或使用字符串、读取或写入某一文件时,我们用到的只是简单的英语字符
7878

7979
> 注意:如果你正在使用 Python 2,我们由希望能够读写其它非英语语言,我们需要使用 `unicode` 类型,它全都以字母 `u` 开头,例如 `u"hello world"`
8080
@@ -97,7 +97,7 @@ Python 提供了一个叫作 `Pickle` 的标准模块,通过它你可以将_
9797

9898
现在你可以忽略 `import` 语句,我们会在[模块章节](./11.modules.md#modules)章节探讨有关它的更多细节。
9999

100-
每当我们编写一款诸如上面那番使用 Unicode 字面量的程序时,我们必须保证 Python 程序已经被告知我们使用的是 UTF-8,因此我们必须将 `# encoding=urf-8` 这一注释放置在我们程序的顶端。[^4]
100+
每当我们诸如上面那番使用 Unicode 字面量编写一款程序时,我们必须确保 Python 程序已经被告知我们使用的是 UTF-8,因此我们必须将 `# encoding=urf-8` 这一注释放置在我们程序的顶端。[^4]
101101

102102
我们使用 `io.open` 并提供了“编码(Encoding)”与“解码(Decoding)”参数来告诉 Python 我们正在使用 Unicode。
103103

16.exceptions.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
## 错误
88

9-
考虑一个简单的 `print` 函数调用。如果我们把 `print` 误拼成 `Print` 会怎样?注意到首字母的大写。在这一例子中,Python 会_指出_一个语法错误
9+
你可以想象一个简单的 `print` 函数调用。如果我们把 `print` 误拼成 `Print` 会怎样?你会注意到它的首字母是大写。在这一例子中,Python 会_抛出(Raise)_一个语法错误
1010

1111
```python
1212
>>> Print("Hello World")
@@ -17,7 +17,7 @@ NameError: name 'Print' is not defined
1717
Hello World
1818
```
1919

20-
你会注意到一个 `NameError` 错误被指出,同时还会打印出检测到的错误发生的位置。这就是一个错误**错误处理器(Error Handler)**[^2] 为这个错误所做的事情。
20+
你会注意到一个 `NameError` 错误被抛出,同时 Python 还会打印出检测到的错误发生的位置。这就是一个错误**错误处理器(Error Handler)**[^2] 为这个错误所做的事情。
2121

2222
## 异常
2323

@@ -30,7 +30,7 @@ Enter something --> Traceback (most recent call last):
3030
EOFError
3131
```
3232

33-
此处 Python 指出了一个称作 `EOFError` 的错误,这基本上代表它发现了一个*文件结尾(End of File)*符号(由 `ctrl-d` 表示)在不该出现的时候出现了。
33+
此处 Python 指出了一个称作 `EOFError` 的错误,代表着它发现了一个*文件结尾(End of File)*符号(由 `ctrl-d` 实现)在不该出现的时候出现了。
3434

3535
## 处理异常
3636

@@ -72,7 +72,7 @@ EOFError
7272

7373
**它是如何工作的**
7474

75-
在这里,我们创建了我们自己的异常类型。这一新的异常类型叫作 `ShortInputException`。它包含两个字段——获取给定输入文本长度的 `length`,程序期望的最小长度 `atleast`
75+
在本例中,我们创建了我们自己的异常类型。这一新的异常类型叫作 `ShortInputException`。它包含两个字段——获取给定输入文本长度的 `length`,程序期望的最小长度 `atleast`
7676

7777
`except` 子句中,我们提及了错误类,将该类存储 `as(为)` 相应的错误名或异常名。这类似于函数调用中的形参与实参。在这个特殊的 `except` 子句中我们使用异常对象的 `length``atlease` 字段来向用户打印一条合适的信息。
7878

@@ -92,7 +92,7 @@ EOFError
9292

9393
我们按照通常文件读取进行操作,但是我们同时通过使用 `time.sleep` 函数任意在每打印一行后插入两秒休眠,使得程序运行变得缓慢(在通常情况下 Python 运行得非常快速)。当程序在处在运行过过程中时,按下 `ctrl + c` 来中断或取消程序。
9494

95-
你会注意到 `KeyboardInterrupt` 异常被抛出,尔后程序退出。不过,在程序退出之前,finally 子句被执行,文件对象总会被关闭。
95+
你会注意到 `KeyboardInterrupt` 异常被抛出,尔后程序退出。不过,在程序退出之前,finally 子句得到执行,文件对象总会被关闭。
9696

9797
另外要注意到我们在 `print` 之后使用了 `sys.stout.flush()`,以便它能被立即打印到屏幕上。
9898

@@ -108,7 +108,7 @@ EOFError
108108

109109
程序输出的内容应与上一个案例所呈现的相同。本例的不同之处在于我们使用的是 `open` 函数与 `with` 语句——我们将关闭文件的操作交由 `with open` 来自动完成。
110110

111-
在幕后发生的事情是有一项 `with` 语句所使用的协议。它会获取由 `open` 语句返回的对象,在本案例中就是“thefile”。
111+
在幕后发生的事情是有一项 `with` 语句所使用的协议(Protocol)。它会获取由 `open` 语句返回的对象,在本案例中就是“thefile”。
112112

113113
它_总会_在代码块开始之前调用 `thefile.__enter__` 函数,并且_总会_在代码块执行完毕之后调用 `thefile.__exit__`
114114

17.stdlib.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# 标准库 {#stdlib}
22

3-
Python 标准库(Python Standrad Library)中包含了大量有用的模块,同时也是每个标准的 Python 安装包中的一部分。熟悉 Pytohn 标准库十分重要,因为只要你熟悉了这些库可以做到的事情的范围,许多问题都能够轻易解决。
3+
Python 标准库(Python Standrad Library)中包含了大量有用的模块,同时也是每个标准的 Python 安装包中的一部分。熟悉 Pytohn 标准库十分重要,因为只要你熟知这些库可以做到什么事,许多问题都能够轻易解决。
44

55
我们将探索这个库中的一些常用模块。你能在你的 Python 安装包中附带的文档中的[“库概览(Library Reference)” 部分](http://docs.python.org/3/library/)中查找到所有模块的全部细节。
66

@@ -29,7 +29,7 @@ True
2929

3030
## 日志模块 {#logging}
3131

32-
如果你想将一些调试(Debugging)信息或一些重要的信息储存在某个地方,以便你可以检查你的程序是否如你所期望那般运行,应该怎么办?你应该如何将这些信息“储存在某个地方”?这可以通过 `logging` 模块来实现。
32+
如果你想将一些调试(Debugging)信息或一些重要的信息储存在某个地方,以便你可以检查你的程序是否如你所期望那般运行,应该怎么做?你应该如何将这些信息“储存在某个地方”?这可以通过 `logging` 模块来实现。
3333

3434
保存为 `stdlib_logging.py`
3535

@@ -45,11 +45,11 @@ True
4545

4646
我们使用了三款标准库中的模块——`os` 模块用以和操作系统交互,`platform` 模块用以获取平台——操作系统——的信息,`logging` 模块用来*记录(Log)*信息。
4747

48-
首先,我们通过检查 `platform.platform()` 返回的字符串来检查我们正在使用的操作系统(有关更多信息,请参阅`import platform; help(platform)`)。如果它是 Windows,我们将找出其主驱动器(Home Drive),主文件夹(Home Folder)以及我们希望存储信息的文件名。将这三个部分汇聚到一起,我们得到了有关文件的全部位置信息。对于其它平台而言,我们需要知道的只是用户的主文件夹位置,这样我们就可获得文件的全部位置信息。
48+
首先,我们通过检查 `platform.platform()` 返回的字符串来确认我们正在使用的操作系统(有关更多信息,请参阅`import platform; help(platform)`)。如果它是 Windows,我们将找出其主驱动器(Home Drive),主文件夹(Home Folder)以及我们希望存储信息的文件名。将这三个部分汇聚到一起,我们得到了有关文件的全部位置信息。对于其它平台而言,我们需要知道的只是用户的主文件夹位置,这样我们就可获得文件的全部位置信息。
4949

5050
我们使用 `op.path.join()` 函数来将这三部分位置信息聚合到一起。使用这一特殊函数,而非仅仅将这几段字符串拼凑在一起的原因是这个函数会确保完整的位置路径符合当前操作系统的预期格式。
5151

52-
我们配置 `logging` 模块,让它以特定的格式将所有信息写入我们指定的文件。
52+
然后我们配置 `logging` 模块,让它以特定的格式将所有信息写入我们指定的文件。
5353

5454
最后,无论这些信息是用以调试,提醒,警告甚至是其它关键的消息,我们都可以将其聚合并记录。一旦程序开始运行,我们可以检查这一文件,从而我们便能知道程序运行过程中究竟发生了什么,哪怕在用户运行时什么信息都没有显示。
5555

@@ -58,7 +58,7 @@ True
5858
标准库中还有许多模块值得探索,例如一些[用以调试(Debugging)的模块](http://docs.python.org/3/library/pdb.html)
5959
[处理命令行选项的模块](http://docs.python.org/3/library/argparse.html)[正则表达式(Regular Expressions)模块](http://docs.python.org/3/library/re.html) 等等等等。
6060

61-
进一步探索标准库的最好方法是阅读由 Doug Hellmann 撰写的优秀的 [Python Module of the Week](http://pymotw.com/2/contents.html) 系列(还可以阅读[它的实体书](http://amzn.com/0321767349))或是阅读 [Python 官方文档](http://docs.python.org/3/))。
61+
进一步探索标准库的最好方法是阅读由 Doug Hellmann 撰写的优秀的 [Python Module of the Week](http://pymotw.com/2/contents.html) 系列(你还可以阅读[它的实体书](http://amzn.com/0321767349)或是阅读 [Python 官方文档](http://docs.python.org/3/))。
6262

6363
## 总结
6464

18.more.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858

5959
## 单语句块
6060

61-
我们已经见识过每一个语句块都由其自身的缩进级别与其它部分相区分。 是这样,不过有一个警告。如果你的语句块只包括单独的一句语句,那么你可以在同一行指定它,例如条件语句与循环语句。下面这个例子应该能比较清楚地解释:
61+
我们已经见识过每一个语句块都由其自身的缩进级别与其它部分相区分。 是这样没错,不过有一个小小的警告。如果你的语句块只包括单独的一句语句,那么你可以在同一行指定它,例如条件语句与循环语句。下面这个例子应该能比较清楚地解释:
6262

6363
```python
6464
>>> flag = True
@@ -169,6 +169,6 @@ AssertionError
169169

170170
## 总结
171171

172-
我们子啊本章中介绍了有关 Python 的更多功能,不过我们还未涵盖到 Python 的所有功能。不过,在这一阶段,我们已经涉猎了大多数你将在实践中遇到的内容。这足以让你开始编写任何你所期望的程序。
172+
我们在本章中介绍了有关 Python 的更多功能,不过我们还未涵盖到 Python 的所有功能。不过,在这一阶段,我们已经涉猎了大多数你将在实践中遇到的内容。这足以让你开始编写任何你所期望的程序。
173173

174174
接下来,我们将讨论如何进一步探索 Python。

19.what_next.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
99
如果你回想至今我们学过、讨论过、遇见过的所有东西,你会发现这其实非常简单。如果你仍想要有关如何进行的提示,这儿倒是有一些。[^2]
1010

11-
一旦你能够做到这件事,你便可以说自己是一名 Python 程序员了。现在,赶快[写封邮件]({{ book.contactUrl }}) 来感谢我写出了这么棒的一本书 ;-)。这一步并非强制但我仍建议如此。同时,请考虑[购买本书的实体书]({{ book.buyBookUrl }})来支持本书的后续改进。
11+
一旦你能够做到这件事,你便可以说自己是一名 Python 程序员了。现在,赶快[写封邮件]({{ book.contactUrl }})来感谢我写出了这么棒的一本书 ;-)。这一步并非强制但我仍建议如此。同时,请考虑[购买本书的实体书]({{ book.buyBookUrl }})来支持本书的后续改进。
1212

1313
如果你觉得上面的程序太容易了,这还有另一个:
1414

@@ -18,7 +18,7 @@
1818

1919
## 下一个项目
2020

21-
如果你发现上面的程序都能很容易地编写出来,那么看看下面这个完整的项目列表,并尝试编写你自己的程序:https://github.com/thekarangoel/Projects#numbers (这一列表与 [Martyr2 的超大项目列表](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/)相同)。
21+
如果你发现上面的程序都能很容易地编写出来,那么看看下面这个完整的项目列表,并尝试编写你自己的程序:https://github.com/thekarangoel/Projects#numbers (这一列表与 [Martyr2 的超级项目列表](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/)相同)。
2222

2323
你还可以看看:
2424

@@ -141,7 +141,7 @@
141141

142142
## 总结
143143

144-
现在我们已经行至本书末尾,不过,正如他们所说,这是_昭示着开始的终结_!你现在已经是一名狂热 Python 用户,毫无疑问,你已准备好通过 Python 来解决诸多问题了。你可以开始自动化你的电脑,去做任何你以前难以想象的事情,你可以开始编写你自己的游戏,你还可以开始做更多更多的事,远不仅此。来,让我们出发吧!
144+
现在我们已经行至本书末尾,不过,正如人们所说,这是_昭示着开始的终结_!你现在已经是一名狂热 Python 用户,毫无疑问,你已准备好通过 Python 来解决诸多问题了。你可以开始自动化你的电脑,去做任何你以前难以想象的事情,你可以开始编写你自己的游戏,开始做更多更多的事,远不仅此。来,让我们出发吧!
145145

146146

147147
---

0 commit comments

Comments
 (0)