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
相关产品推荐
相关产品推荐

