习题 6: 字符串(string)和文本 **************************** 虽然你已经在程序中写过字符串了,你还没学过它们的用处。在这章习题中我们将使用复杂\ 的字符串来建立一系列的变量,从中你将学到它们的用途。首先我们解释一下字符串是什么 东西。 字符串通常是指你想要展示给别人的、或者是你想要从程序里“导出”的一小段字符。Python 可以通过文本里的双引号 ``"`` 或者单引号 ``'`` 识别出字符串来。这在你以前的 ``print`` 练习中你已经见过很多次了。如果你把单引号或者双引号括起来的文本放到 ``print`` 后面,\ 它们就会被 python 打印出来。 字符串可以包含格式化字符 ``%s``\,这个你之前也见过的。你只要将格式化的变量放到字符串\ 中,再紧跟着一个百分号 ``%`` (percent),再紧跟着变量名即可。唯一要注意的地方,是如果你想要\ 在字符串中通过格式化字符放入多个变量的时候,你需要将变量放到 ``( )`` 圆括号(parenthesis)\ 中,而且变量之间用 ``,`` 逗号(comma)隔开。就像你逛商店说“我要买牛奶、鸡蛋、面包、清汤”一样,\ 只不过程序员的语法是"(milk, eggs, bread, soup)"。 我们将键入大量的字符串、变量、和格式化字符,并且将它们打印出来。我们还将练习使用简写\ 的变量名。程序员喜欢使用恼人的难度的简写来节约打字时间,所以我们现在就提早学会这个,这样你\ 就能读懂并且写出这些东西了。 .. literalinclude:: ex/ex6.py :linenos: 你应该看到的结果 =================== .. literalinclude:: ex/ex6.txt :language: console :linenos: 加分习题 ============ 1. 通读程序,在每一行的上面写一行注解,给自己解释一下这一行的作用。 2. 找到所有的"字符串包含字符串"的位置,总共有四个位置。 3. 你确定只有四个位置吗?你怎么知道的?没准我在骗你呢。 4. 解释一下为什么 ``w`` 和 ``e`` 用 ``+`` 连起来就可以生成一个更长的字符串。 常见问题回答 ========================== `%r` 和 `%s` 有什么不同? `%r` 用来做 debug 比较好,因为它会显示变量的原始数据(raw data),而其它的符号则是\ 用来向用户显示输出的。 既然有 `%r` 了,为什么还要用 `%s` 和 `%d`\? `%r` 用来 debug 最好,而其它格式符则是用来向用户显示输出的。 如果你觉得很好笑,可不可以写一句 ``hilarious = True``\? 可以。在习题 27 中你会学到关于布尔函数的更多知识。 为什么你在有些字符串上用了 `'` (单引号) 而在别的上没有用? 很大程度上只是个风格问题,我的风格就是在双引号的字符串中使用单引号。看看第 10 行。g that. 错误 `TypeError: not all arguments converted during string formatting`\。 确定每一行代码都完全正确。这里是因为你的字符串里的 `%` 格式化字符数量比后面给的变量\ 多,仔细检查一下哪里写错了。