elif 语句结合 "and" 或 "or" 不起作用

elif statement combined with "and" or "or" not working

我正在为我的氏族编写这个电报机器人。机器人应该根据文本消息中的几个词发送回复。假设我在包含单词 "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!")

msg containing thalia and love

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

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

现在我正在用 "and" 和 "or" 对更多单词尝试相同的技术,但它不起作用。如果我离开 "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")

it triggered the command without the 3 words in one sentence

如何以更 "professional" 的方式重写此代码?我需要更改什么才能使其正常工作?只有当像 thalia 爱情代码中那样使用单词组合时,机器人才会响应。而不是在使用 "matches" 时。*

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

你的 'matches' 片段可以写成如下。

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

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