我编写了这个非常简单的代码,它应该响应特定的用户输入。我知道我做错了什么,但我不知道它是什么。当我输入一个单词或留空时,我会收到回复"无"。先感谢您 :) 这是我的代码:
func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) {
print("Pinched or tapped on the map")
}
答案 0 :(得分:3)
for word in sentence:
if word.lower() in GREETING_KEYWORDS:
return random.choice(GREETING_RESPONSES)
else:
pass
如果GREETING_KEYWORDS
中没有任何字词怎么办?什么回来了?当发生这种情况时,没有明确的return
语句,因此答案是:None
被返回。
如果for
循环完成而没有找到问候语,则可以通过返回默认响应来解决此问题。
for word in sentence:
if word.lower() in GREETING_KEYWORDS:
return random.choice(GREETING_RESPONSES)
return "default response"
下一个问题是for word in sentence
遍历句子的每个字母,而不是每个字。要迭代单词,将句子分开:
for word in sentence.split():
if word.lower() in GREETING_KEYWORDS:
return random.choice(GREETING_RESPONSES)
return "default response"
接下来,我发现您要检测双字问候:whats up
。这不会起作用,因为将句子分成单词意味着你只能检查一个单词的问候。我建议颠倒逻辑:循环所有可能的问候,看看他们是否在句子中。 (请注意,现在你不想要将句子分成单词。)
for greeting in GREETING_KEYWORDS:
if greeting in sentence:
return random.choice(GREETING_RESPONSES)
return "default response"
最后,这有点高级,但您可以使用生成器表达式加上any()
来简化检查到简单的if / else。
if any(greeting in sentence for greeting in GREETING_KEYWORDS):
return random.choice(GREETING_RESPONSES)
else:
return "default response"
我喜欢这个,因为它更像是简单的英语。