如何计算Python print语句中逻辑运算符的运算结果
两道Python代码输出题解答
第一题
代码
a=5 b=6 print ((a and b) or (a>b))
推导过程
Python布尔运算遵循两个规则:一是短路逻辑,二是返回实际参与运算的对象,而非单纯的True/False;非0整数的布尔值默认为真。
- 先算括号内的
a and b:左侧a=5为真,直接返回右侧b的值6 - 再算
6 or (a>b):左侧6为真,直接返回6,右侧a>b(5>6为假)被短路不执行
输出结果
6
第二题
你手写的代码存在语法错误,print(c)和后续表达式之间漏掉了or运算符,对照原题修正后的代码如下:
a=4 b=6 c=10 print((a<=b) and print(c) or ((c==a) and (not(c<b))))
推导过程
额外补充:print()函数的返回值为None,布尔值为假。
- 先算
a<=b:4<=6结果为True - 再算
True and print(c):左侧为真,执行右侧print(c)输出10,该部分最终返回print的返回值None - 再算
None or ((c==a) and (not(c<b))):左侧None为假,执行右侧表达式 - 右侧
c==a:10==4结果为False,and运算左侧为假直接返回False,后续not(c<b)被短路不执行 - 整个表达式最终结果为False,被外层print输出
输出结果
10 False
内容的提问来源于stack exchange,提问作者SYT
相关产品推荐
相关产品推荐

