11# 输入与输出 {#io}
22
3- 有些时候你的程序会与用户产生交互。举个例子,你会希望获取用户的输入内容,并打印出一些返回的结果 。我们可以分别通过 ` input() ` 函数与 ` print ` 函数来实现这一需求。
3+ 有些时候你的程序会与用户产生交互。举个例子,你会希望获取用户的输入内容,并向用户打印出一些返回的结果 。我们可以分别通过 ` input() ` 函数与 ` print ` 函数来实现这一需求。
44
55对于输入,我们还可以使用 ` str ` (String,字符串)类的各种方法。例如,你可以使用 ` rjust ` 方法来获得一个右对齐到指定宽度的字符串。你可以查看 ` help(str) ` 来了解更多细节。
66
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
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
0 commit comments