习题 6: 字符串(string)和文本

虽然你已经在程序中写过字符串了,你还没学过它们的用处。在这章习题中我们将使用复杂的字符串来建立一系列的变量,从中你将学到它们的用途。首先我们解释一下字符串是什么 东西。

字符串通常是指你想要展示给别人的、或者是你想要从程序里“导出”的一小段字符。Python 可以通过文本里的双引号 " 或者单引号 ' 识别出字符串来。这在你以前的 print 练习中你已经见过很多次了。如果你把单引号或者双引号括起来的文本放到 print 后面,它们就会被 python 打印出来。

字符串可以包含格式化字符 %s,这个你之前也见过的。你只要将格式化的变量放到字符串中,再紧跟着一个百分号 % (percent),再紧跟着变量名即可。唯一要注意的地方,是如果你想要在字符串中通过格式化字符放入多个变量的时候,你需要将变量放到 ( ) 圆括号(parenthesis)中,而且变量之间用 , 逗号(comma)隔开。就像你逛商店说“我要买牛奶、鸡蛋、面包、清汤”一样,只不过程序员的语法是”(milk, eggs, bread, soup)”。

我们将键入大量的字符串、变量、和格式化字符,并且将它们打印出来。我们还将练习使用简写的变量名。程序员喜欢使用恼人的难度的简写来节约打字时间,所以我们现在就提早学会这个,这样你就能读懂并且写出这些东西了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
x = "There are %d types of people." % 10
binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s." % (binary, do_not)

print x
print y

print "I said: %r." % x
print "I also said: '%s'." % y

hilarious = False
joke_evaluation = "Isn't that joke so funny?! %r"

print joke_evaluation % hilarious

w = "This is the left side of..."
e = "a string with a right side."

print w + e

你应该看到的结果

1
2
3
4
5
6
7
8
$ python ex6.py
There are 10 types of people.
Those who know binary and those who don't.
I said: 'There are 10 types of people.'.
I also said: 'Those who know binary and those who don't.'.
Isn't that joke so funny?! False
This is the left side of...a string with a right side.
$

加分习题

  1. 通读程序,在每一行的上面写一行注解,给自己解释一下这一行的作用。
  2. 找到所有的”字符串包含字符串”的位置,总共有四个位置。
  3. 你确定只有四个位置吗?你怎么知道的?没准我在骗你呢。
  4. 解释一下为什么 we+ 连起来就可以生成一个更长的字符串。

常见问题回答

%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
确定每一行代码都完全正确。这里是因为你的字符串里的 % 格式化字符数量比后面给的变量多,仔细检查一下哪里写错了。

Project Versions

Table Of Contents

Previous topic

习题 5: 更多的变量和打印

Next topic

习题 7: 更多打印

This Page