-2

我正在为我的氏族编写这个电报机器人。机器人应该根据文本消息中的几个词发送回复。假设我在包含单词“Thalia”和“love”的组中输入了一个文本,并且我希望机器人做出响应。以下作品。

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!")

含有塔利亚和爱的味精

我这样编码是因为当我使用“and”或“or”关键字时,语句不起作用,机器人会发疯。在上面,如果我编码:elif "thalia" and "love".....它不起作用。

如果有另一种编码方式,我将不胜感激!

现在我正在用“and”和“or”对更多单词尝试相同的技术,但它不起作用。如果我离开“和”和“或”,它工作正常。但是当然,我不能在这个特定的响应中使用我想要的单词组合。

 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")

它触发了一句话中没有三个单词的命令

如何以更“专业”的方式重写此代码,我需要更改哪些内容才能使其正常工作?机器人只有在像 thalia love code 中那样使用单词组合时才会做出响应。而不是使用“匹配”时。*

4

1 回答 1

0

Python 很像自然语言,但解释器无法填充人类听众可以填充的内容。'a and b in c' 必须写成'a in c and b in c'。

在编写 if 语句之前,您应该将文本小写一次,而不是重复。然后把它变成一组单词,去掉标点和符号后,避免小写字符串的重复线性搜索。这是仅 ascii 输入的不完整示例。

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")

你也可以使用正则表达式匹配来做同样的事情,但是像上面这样的逻辑语句可能更容易开始。

于 2016-03-17T23:40:26.897 回答