Python条件判断中or替代and的差异及异常问题咨询
逻辑运算符误用导致的程序异常问题
问题描述
将以下Python代码中第三行if条件里的and替换为or后,无论输入什么内容,程序都会返回"Aww okay, maybe next time?"并退出;使用and时程序运行正常,请问该现象的原因是什么?
相关代码
permission = str(input("Would you like to take a quiz?\n")).lower() if permission != "yes" and permission != "sure": print("Aww okay, maybe next time?") exit(0) else: questionAnswer = input("Great! Do you know what keyword if and else make together?\n").lower() if questionAnswer == "elif": secondQuestion = input("Correct! Now, what does print do?\n").lower() else: secondQuestion = input("Incorrect, what is a integer?\n").lower() # noinspection PyUnboundLocalVariable if secondQuestion == "it prints a statement": print("Correct! You scored 2/2 on this test.\n") elif secondQuestion.lower() == "a whole number": print("Correct! You scored a 1/2 on this test.\n")
原因分析
这是逻辑运算符的判断规则差异导致的:
- 使用
and的正确逻辑:
原条件permission != "yes" and permission != "sure"表示:只有当输入**既不是"yes",同时也不是"sure"**的时候,才触发退出逻辑。这符合需求——只要输入是两者中的任意一个,就会进入问答环节。 - 替换为
or后的错误逻辑:
修改后的条件permission != "yes" or permission != "sure"表示:只要输入不是"yes",或者不是"sure",就触发退出。但任何输入都无法同时满足"是yes"和"是sure",所以:- 输入"yes"时,
permission != "sure"为真,整个or条件成立,触发退出; - 输入"sure"时,
permission != "yes"为真,整个or条件成立,触发退出; - 输入其他内容时,两个判断都为真,自然也触发退出。
因此无论输入什么,程序都会执行退出逻辑。
- 输入"yes"时,
简单总结:要判断"输入不属于A和B中的任何一个",必须用and;用or会导致逻辑完全相反,覆盖所有输入场景。
内容的提问来源于stack exchange,提问作者Karmaᄎ
相关产品推荐
相关产品推荐

