回声定位
上一课,我们替换掉了门牌咒语里碍事的小符文。现在 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() 可以先把这个词变成一个可用的线索坐标。
starter 已经把原句和输出准备好了。你这次真正要补上的动作,只有创建 echo_position 的那一行。
用 clue_note.find("echo") 去搜这个线索词,把结果存进 echo_position。
先看原句,再看位置结果。你这次要带走的感觉是:原来字符串里面的某个词,也可以被我主动搜出来,并拿到它的起始位置。
如果 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() 返回的是目标文本在字符串里的起始位置。名字可以先轻轻记一下,更重要的是这个新手感:字符串不只是能改,也能搜。
以后当你看到一句文本、又想沿着其中某个词继续观察或处理时,可以先问自己:要不要先把这个词的位置找出来?这一课先把这一下搜索动作练熟就好。