我为我的家族编写了这个电报机器人。机器人应该根据文本消息中的几个单词发送回复。假设我在包含单词" Thalia"的组中键入文本。和#34;爱"我希望机器人能够做出回应。以下作品。
elif "thalia" in text.lower():
if "love" in text.lower():
reply("I love u too babe <3." "\nBut I love my maker even more ;).")
else:
reply("Say my name!")
msg containing thalia and love
我这样编码是因为当我使用&#34;和&#34;或&#34;或&#34;关键词语句不起作用,机器人疯了。在上面,如果我编码:elif "thalia" and "love".....
它不起作用。
如果还有其他方式来编码,我会很感激提示!
现在我正在使用&#34;和&#34;更多的单词尝试相同的技巧。和&#34;或&#34;但它不起作用。如果我离开&#34;和&#34;和&#34;或&#34;它工作正常。但是当然,我不能使用我想要的单词组合来进行这种特殊的回应。
elif "what" or "when" in text.lower():
if "time" or "do" in text.lower():
if "match" in text.lower():
reply ("If you need assistence with matches, type or press /matches")
it triggered the command without the 3 words in one sentence
如何在更专业的专业人士中重写此代码?方式,我需要改变什么来让它工作?机器人仅在使用像thalia爱情代码中的单词组合时才会响应。而不是&#34;匹配&#34;使用。*
答案 0 :(得分:0)
Python非常像自然语言,但解释器无法填写人类听众的能力。 'a和b in c'必须写成'a in c in b in c'。
在编写if语句之前,您应该一次小写案例文本,而不是重复。然后在删除标点和符号后将其转换为一组单词,以避免对下方字符串的重复线性搜索。这是ascii-only输入的一个不完整的例子。
d = str.maketrans('', '', '.,!') # 3rd arg is chars to delete
text = set(text.lower().translate(d).split())
您的'匹配'代码段可以写成如下。
elif (("what" in text or "when" in text) and
("time" in text or "do" in text) and
"match" in text)
reply ("If you need assistence with matches, type or press /matches")
你也可以使用正则表达式匹配来做同样的事情,但是像上面这样的逻辑语句可能更容易入手。