通过痛苦的方式学习Python,第六个练习。

1 投票
1 回答
2872 浏览
提问于 2025-04-16 22:28

我在这个网站上搜索过,但似乎《Learn Python the Hard Way》这本书里的这个练习没有在之前的问题中被讨论过。

这个练习是这样的:

1) 找出所有字符串中包含另一个字符串的地方。总共有四个地方。

2) 你确定只有四个地方吗?你怎么知道?也许我喜欢撒谎。

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) #two strings inside a string, count is 2

print x
print y

print "I said: %r." % x #here, count is 3
print "I also said: '%s'." % y #here, count is 4

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

我试着解决这个问题,并在我找到字符串中包含另一个字符串的地方做了注释(找到了4个)。但是,作者的第二个问题让我担心我可能没有找到全部。请问我是不是漏掉了什么?如果是的话,能告诉我是什么吗?

1 个回答

9

如果你把“把一个字符串放在另一个字符串里”理解为“用格式字符和字符串参数”,那么你就正确地找到了四个出现的地方。也许我们可以不看那些没用的说明,直接解释一下发生了什么。想了解更多,可以看看官方文档关于格式字符的介绍。我会尽量提供一些有用的练习题,而不是让你感到困惑的问题。

x = "There are %d types of people." % 10

%d 是用来表示一个有符号的十进制整数的格式字符(大多数人听到“数字”时会想到的东西)。比如10就是十进制的,放进字符串里后,就变成了字符串There are 10 types of people.

练习: "7+6: %d" % (7+6) 的结果会是什么?在你的Python环境里试试吧。
练习: "0x12: %d" % 0x12 的结果会是什么?在你的Python环境里试试。提示:前面有0x的数字是十六进制的,也就是基数16,而不是10。



binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s." % (binary, do_not)

%s 用来插入一个值的字符串表示。这个例子说明了如果格式字符串里有多个%d%s等,我们需要提供相应数量的参数,这些参数可以放在一个元组列表里。元组(用圆括号)和列表(用方括号)的区别在于,元组是不可变的(也就是说不能改变),而列表是可以改变的。

练习: 给定元组x = ('world', 'Hello'),构造一个元组y,使单词的顺序正确。可以参考Dive Into Python对元组的介绍,帮助你理解元组的基础知识。



print "I said: %r." % x

%r 是一个值的表示形式,理想情况下是你可以在Python环境中输入的内容。你也可以用repr函数得到相同的表示形式。例如,repr("a") == "'a'",而str(a) == "a"。对于大多数类型,除了字符串,reprstr(或者在格式字符串中的%r%s)的结果是一样的。



print w + e

连接了两个字符串(也就是把一个放在另一个后面)。注意,如果两个参数都是数字,+的意思就变成了加法。

练习: "3" + "4" 的结果是什么?在你的Python环境里试试。
练习: 给定x = "3"; y = "4",打印出和为7的结果(提示)。

撰写回答