如果…elif…else总是在elif上结束,即使elif不满意?

2024-10-04 07:36:11 发布

您现在位置: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.")

我想把它设置成这样,如果“如何…”在输入中,它会启动一个谷歌搜索,如果输入中有“谁是”或“谁是”在维基百科上查找,如果没有一个条件得到满足,它只会说命令还没有实现。问题是,如果满足前两个if,程序就会按预期工作,如果我使用一些随机词尝试让else工作,它只会给我wikipedia建议和一些错误:“…\AppData\Local\Programs\Python\Python37\lib\site packages\wikipedia\wikipedia.py:389:UserWarning:没有显式指定解析器,所以我使用了这个系统中最好的HTML解析器(“HTML.parser”)。这通常不是问题,但如果您在另一个系统上或在不同的虚拟环境中运行此代码,它可能会使用不同的解析器,并且表现不同。”


Tags: in解析器if系统defhtml助手wikipedia
2条回答

"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

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

  1. “谁是”这个词的计算结果就像字符串一样真实。如果它不为null,则返回true

  2. “谁是”指挥者,这是你要做的一部分

您需要在一个检查中将它们组合在一起,否则由于truthy字符串,它将始终返回true。像这样:

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

相关问题 更多 >