如果... elif ... else总是以elif结尾,即使elif不满意?

时间:2019-10-15 18:25:18

标签: python

我是Python的新手,正在尝试制作一种“助手”来掌握这种语言。如果不满足if语句,elif始终会启动,是否知道如何解决?

如果没有,我已经尝试更改所有内容。

import wikipedia

def getSummaryFromWikipedia(command):
    return wikipedia.summary(command, sentences=1)

def loopTest():
    command = input("Command: ")
    if "how to" in command:
        googleSearch(command)
    elif "who is" or "who was" in command:
        say(getSummaryFromWikipedia(command))
    else:
        print("Command not yet implemented.")

我想对其进行设置,以便在输入中输入“ How to ...”时开始谷歌搜索,输入中是否包含“ who is”或“ who was”以在Wikipedia上进行查找如果不满足任何条件,则说明该命令尚未执行。问题是,如果满足前两个条件,程序将按预期工作,如果我使用一些随机词尝试使其他程序正常工作,它只会给我维基百科建议和一些错误:“ ... \ AppData \ Local \程序\ Python \ Python37 \ lib \ site-packages \ wikipedia \ wikipedia.py:389:UserWarning:未明确指定解析器,因此我正在为此系统使用最佳的HTML解析器(“ html.parser”)。通常这不是问题,但是如果您在其他系统或不同的虚拟环境中运行此代码,则它可能使用不同的解析器并且行为不同。“

2 个答案:

答案 0 :(得分:3)

"who is" or "who was" in command将始终为true,因为它的值为"who is" or ("who was" in command),并且非空字符串的值为True。您真正想要的是"who is" in command or "who was" in command

答案 1 :(得分:1)

elif语句在这里检查两个条件。

  1. “ who is”(真人),因为字符串为真,因此评估为真。就像它不是null一样,它返回true。

  2. “谁是”命令中的内容,这是您要执行的操作的一部分。

您需要将它们两者合并在一起,否则会由于真实字符串而始终返回true。像这样:

elif "who is" in command or "who was" in command: