Python中OR运算符导致if..elif..else代码块失效问题求助
问题解决:elif分支逻辑错误导致后续代码不执行
你遇到的问题出在这行代码的逻辑判断上:
elif 'what is the time' or 'what time is it' in text:
错误原因
在Python中,or运算符的两侧是独立的判断条件。'what is the time'是一个非空字符串,在布尔语境下会被判定为True,所以不管text里有没有包含对应内容,这个elif的条件都会成立,程序会直接进入这个分支执行,导致后面的elif 'thank you'和else分支永远不会被触发。
正确写法
你需要把两个判断条件都完整地写出来,确保每个条件都是检查短语是否在text中:
elif 'what is the time' in text or 'what time is it' in text:
如果后续需要添加更多类似的时间相关短语,也可以用更简洁的方式:
elif any(phrase in text for phrase in ['what is the time', 'what time is it']):
修改后的完整代码
def response(text): if text != "": if 'hello jarvis' in text: print("hello sir, how can i help you") speak("hello sir, how can i help you") elif 'how are you' in text: print("I'm fine sir, how are you?") speak("I'm fine sir, how are you?") elif 'are you alive' in text: print("no i am not alive, i am just a combination of very complex algorithms that keeps me functional") speak("no i am not alive, i am just a combination of very complex algorithms that keeps me functional") elif 'what is the time' in text or 'what time is it' in text: strtime = datetime.today().strftime("%H:%M:%p") print(f"the time is {strtime}") speak(f"the time is {strtime}") elif 'thank you' in text: speak("you are welcome sir") exit() else: url = f"https://www.google.com/search?q={text}" webbrowser.get().open(url) speak("here is what i found") else: speak("call me when you have something to ask me")
内容的提问来源于stack exchange,提问作者Mundheer Suleiman
相关产品推荐
相关产品推荐

