Python中or逻辑判断为何触发print语句?新手技术求助
Python逻辑表达式错误解析
你的问题出在逻辑表达式的写法和运算符优先级上:
表达式的实际执行逻辑
你的代码中if 124 != A or B:会被Python按照运算符优先级解析为(124 != A) or B:- 首先计算
124 != A:A的值是123,所以这个比较的结果是True - 然后计算
True or B:B的值是124,在Python中非零数值会被视为布尔值True,所以整个表达式结果为True
因此条件成立,触发了print语句。
- 首先计算
单独使用
if B != 124:逻辑正常的原因
这个表达式直接比较B和124的关系,B的值是124,所以B != 124的结果是False,条件不成立,自然不会执行print。正确的写法(匹配你的预期)
如果你希望“当124不等于A并且124不等于B”时才执行print,应该把or换成and:A = 123 B = 124 if 124 != A and 124 != B: print("value doesn't match")此时因为
124 != B是False,整个条件结果为False,不会执行print,符合你的预期。或者用更直观的逻辑表达:
if not (124 == A or 124 == B): print("value doesn't match")这个表达式的意思是“当124既不等于A也不等于B时”执行打印,和上面的写法逻辑等价。
内容的提问来源于stack exchange,提问作者jabodom934
相关产品推荐
相关产品推荐

