ELIF 语句与"and"或"or"相结合不起作用



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

它触发了一个句子中没有 3 个单词的命令

如何以更"专业"的方式重写此代码,我需要更改哪些内容才能使其正常工作? 机器人仅在单词组合使用时做出响应,就像在 thalia 爱情代码中一样。而不是使用"匹配"时。

Python很像自然语言,但解释器无法填充人类听众可以填写的内容。 "C 中的 A 和 B"必须写成"C 中的 A 和 C 中的 B"。

在编写 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")

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

最新更新