Python中or语句条件测试疑问:两段相似代码结果为何不同
问题原因解析
你遇到的问题是运算符优先级和代码执行顺序导致的,并非or逻辑本身出错,拆解来看:
错误代码的执行过程
对于代码:
number_1=18 number_2=20 print(number_1>=20) or (number_2>=20)
Python会按照运算符优先级来执行:
- 先执行优先级更高的
print(number_1>=20):number_1=18,所以18>=20的结果是False,print会直接输出这个False;同时print函数的返回值是None(所有没有return语句的函数默认返回None)。 - 接着执行
None or (number_2>=20):number_2=20,20>=20的结果是True,所以整个or表达式的最终结果是True,但这个结果并没有被打印——你看到的输出只是第一步print的结果False。
正确代码的执行过程
而代码:
print(number_1>=20 or number_2>=20)
是把整个or逻辑表达式作为print的参数:
- Python先计算
number_1>=20 or number_2>=20的结果:因为number_2>=20为True,根据or逻辑“只要一个为真则整体为真”,整个表达式结果是True。 - 然后
print把这个True输出,所以你看到了正确的结果。
验证示例
如果想直观看到错误代码的完整执行结果,可以加一行打印or表达式的结果:
number_1=18 number_2=20 result = print(number_1>=20) or (number_2>=20) print(result)
运行后会先输出False(来自第一个print),然后输出True(or表达式的最终结果),就能清晰看到整个过程。
内容的提问来源于stack exchange,提问作者Perspicacious Coder
相关产品推荐
相关产品推荐

