门口标记
上一课,我们在回声留言中找到了线索词的位置。现在 Hoppy 来到水晶拱门前,门框上刻着一条边缘标记:"gate: crystal arch"。
这次 Hoppy 不需要继续往句子中间搜,也不需要改写文字。守门精灵只看两端信号:它是不是以 gate: 开头?是不是以 arch 结尾?如果答案藏在边缘,直接看开头和结尾最省事。
先看见两头判断会得到什么
这一课要建立的感觉是:有时候你并不需要整句搜索。你只想知道字符串两头有没有你在意的信号。这时,屏幕上出现的不是位置数字,而是 True 或 False。
gate_marker = "gate: moon arch"
print("Marker:", gate_marker)
has_gate_prefix = gate_marker.startswith("gate:")
has_arch_suffix = gate_marker.endswith("arch")
print("Starts with gate:", has_gate_prefix)
print("Ends with arch:", has_arch_suffix)
运行后,你会看到两个 True。这代表:这条标记确实带着你要看的开头信号,也带着你要看的结尾信号。你不是在改它,也不是在找中间某个词的位置;你只是在读它的边缘。
同一类动作:看开头,也看结尾
startswith() 和 endswith() 可以一起理解。它们做的是同一类判断:检查字符串边缘是不是带着某个信号。
当你关心的是开头,就用 startswith();当你关心的是结尾,就用 endswith()。如果信号本来就在两头,你就不必整句搜索,也不必先改写文本。
starter 已经把原始字符串和输出摆好了。你这次真正要补上的,就是 has_gate_prefix 和 has_arch_suffix 这两行。
用 gate_marker.startswith("gate:") 检查前缀,再用 gate_marker.endswith("arch") 检查后缀。
先看原始标记,再看两个判断结果。你这次要带走的直觉是:如果要看的信号就在边缘,直接检查边缘就够了。
因为你这次不是在问“它出现在哪”,而是在问“它是不是这样开头 / 这样结尾”。所以返回的是布尔值,也就是 True 或 False。
参考答案点击展开点击收起
gate_marker = "gate: crystal arch"
print("Marker:", gate_marker)
has_gate_prefix = gate_marker.startswith("gate:")
has_arch_suffix = gate_marker.endswith("arch")
print("Starts with gate:", has_gate_prefix)
print("Ends with arch:", has_arch_suffix)高级技巧想更进一步?点击展开点击收起
程序员会说:startswith() 和 endswith() 返回的是布尔值。名字可以先轻轻记一下,更重要的是这个判断手感:当线索就在字符串的边缘时,你可以直接检查边缘。
以后当你看到一条文本、又只在意它是不是带着某种开头或结尾信号时,就可以先问自己:我是不是根本不用整句搜索,只要看两头就行?这一课先把这个边缘判断动作练熟就好。