You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中if语句功能异常求助:输出正确响应后仍打印IDK

问题解决:程序输出正确响应后仍打印“IDK”

问题原因

你的代码里两个if是独立执行的判断逻辑。比如当输入包含"hey"这类问候语时,第一个if条件满足,会打印"Greeting",但程序会继续执行第二个if的判断——因为输入里没有指定的历史人物名,所以会触发对应的else块,打印"IDK"。这就是为什么正确响应和"IDK"会同时出现。

修复方案

方案1:互斥条件判断(仅执行第一个匹配的响应)

把第二个if改成elif,并将else放在最后,这样只有当前面所有条件都不满足时,才会输出"IDK":

#!/usr/bin/python3

print("Hey.\n")

while 1:
    inp = input("Enter text - ")

    if "hey" in inp or "hello" in inp or "hi" in inp or "greetings" in inp:
        print("Greeting\n")
    elif "sirwalterraleigh" in inp or "abrahamlincoln" in inp:
        print("History\n")
    else:
        print("IDK.")

方案2:允许多条件同时匹配(满足多个条件时输出多个响应)

如果需要支持输入同时触发多个响应(比如输入既包含问候语又包含历史人物名时,同时打印"Greeting"和"History"),可以用一个标记变量记录是否有响应输出,最后再判断是否打印"IDK":

#!/usr/bin/python3

print("Hey.\n")

while 1:
    inp = input("Enter text - ")
    has_response = False

    if "hey" in inp or "hello" in inp or "hi" in inp or "greetings" in inp:
        print("Greeting\n")
        has_response = True

    if "sirwalterraleigh" in inp or "abrahamlincoln" in inp:
        print("History\n")
        has_response = True

    if not has_response:
        print("IDK.")

内容的提问来源于stack exchange,提问作者lunix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:07:37