Python中if语句用and做多关键词匹配逻辑异常问题求解
Python语音助手if判断异常解决方案
问题根因
你编写的if "what"and"about"and"you" in mind判断逻辑不符合Python语法规则,实际执行时会按以下逻辑处理:
- 非空字符串在Python布尔运算中默认判定为
True,因此"what"、"about"两个单独的字符串参与运算时,返回值恒为真 - 整个表达式最终等价于仅判断
"you" in mind,只要识别结果中存在you关键词,if分支就会触发,完全不会校验另外两个关键词是否存在。如果识别结果误带出you,哪怕语句包含information关键词,也会优先匹配if分支而非后续elif分支。
修复代码
将if条件改为分别判断三个关键词是否都存在于mind变量中即可:
greeting() # greeting mesaage ear = listen() # listen my voice stored in ear variable mind = str(recognise(ear)) #recogniser convert it in text by help of google and store in mind variable if "what" in mind and "about" in mind and "you" in mind: speak(" i am also fine!") speak("what can i do for you?") elif "information" in mind: speak("what you want to know from me, sir!")
拓展写法
如果后续需要同时判断的关键词较多,可以使用all()函数简化代码:
check_keys = ["what", "about", "you"] if all(key in mind for key in check_keys): # 对应执行逻辑
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

