🐸

回声定位

数据与文本工具python-data-tinkerer-05-the-echo-finder
奖励: 90 XP
|

回声定位

上一课,我们替换掉了门牌咒语里碍事的小符文。现在 Hoppy 走进水晶拱门前的回声廊,听见墙上浮出一句留言:"Listen for the echo near the crystal arch"

这次 Hoppy 不想再改文字,而是想追踪里面的线索词。要盯住 echo,最好先知道它藏在句子的哪个位置。现在要学的不是修字,而是把线索词搜出来,拿到它的坐标。

先看见线索词怎样变成一个数字

这节课最重要的体验,是第一次看到一件事:字符串里不只有内容,还藏着可以搜出来的位置。你搜一下关键词,屏幕上就会出现一个明确的数字。

clue_note = "Find the bell near the bridge"

print("Clue:", clue_note)

bell_position = clue_note.find("bell")
print("Bell starts at:", bell_position)

运行后,你会看到 15。这个数字的意思不是“echo 有 15 个字母”,而是:echo 这段文字在这句提示里,从位置 15 开始出现。

find() 在字符串里搜线索

find() 会在一条字符串里寻找你给它的目标文本。找到了,它就返回那个目标开始出现的位置;没找到,它会返回 -1

这一课先不用急着写判断。你只要先形成一个直觉:当一句文本已经够清楚、但你想沿着里面某个词继续做事时,find() 可以先把这个词变成一个可用的线索坐标。

1
找到 echo_position 那一行

starter 已经把原句和输出准备好了。你这次真正要补上的动作,只有创建 echo_position 的那一行。

2
在 clue_note 上搜索 echo

clue_note.find("echo") 去搜这个线索词,把结果存进 echo_position

3
运行并看见原句 + 位置数字

先看原句,再看位置结果。你这次要带走的感觉是:原来字符串里面的某个词,也可以被我主动搜出来,并拿到它的起始位置。

这里的 -1 先轻轻认识一下

如果 find() 没找到目标,它会返回 -1。这代表“没有出现”。这一课先把它当成一个信号就够了,还不用展开成分支判断。

参考答案
点击展开
参考答案:
clue_note = "Listen for the echo near the crystal arch"

print("Clue:", clue_note)

echo_position = clue_note.find("echo")
print("Echo starts at:", echo_position)
高级技巧
想更进一步?点击展开

程序员会说:find() 返回的是目标文本在字符串里的起始位置。名字可以先轻轻记一下,更重要的是这个新手感:字符串不只是能改,也能搜。

以后当你看到一句文本、又想沿着其中某个词继续观察或处理时,可以先问自己:要不要先把这个词的位置找出来?这一课先把这一下搜索动作练熟就好。

Loading...
终端输出
Terminal
Ready to run...