3 and 5 + True or False为什么答案是6
按优先级算不是应该先算 5 + True 吗?为什么答案是先算的 3 and 5呢? 为什么说答案是先算的3 and 5? and优先于or若 and 的左侧逻辑值为 True,则输出其后的表达式
若 or 的左侧逻辑值为 True,直接输出 or 左侧表达式
5+true=6,不是这么计算的么? https://baike.baidu.com/item/运算符优先级/4752611?fr=aladdin
先and再or 3 and 5 + True or False
就是先算5+True啊,布尔类型是int类型的子类,True为1,所以5+True 为6
然后就是 3 and 6 or False
这时候先进行and运算,3 and 6 结果是6
在进行or运算 ,6 or False 结果是6
可以看看我写的这个帖子:Python细节之4、逻辑运算符(and、or、not),看看and 和or 的运算 # 逻辑与运算,只有所有的运算数都是 True,结果才为 True
# 逻辑与运算的短路问题:只有当所有条件都为真时,才会进行下一步运算
4 > 3 and print("hello world")# hello world
4 < 3 and print("你好世界")
# 逻辑或运算,只有所有的运算数都是 False,结果才是 False
# 逻辑或运算的短路问题:如果第一个条件为真,那么就不会往后再进行运算
4 > 3 or print("哈哈哈")
4 < 3 or print("嘿嘿嘿")# 嘿嘿嘿
# 逻辑运算的结果,一定是布尔值吗?不一定
# 逻辑与运算做取值时,取第一个为 False 的值,如果所有的运算数都是 True,取最后一个值
print(3 and 5 and 0 and "hello")# 0
print("good" and "yes" and "ok" and 100)# 100
# 逻辑或运算做取值时,取第一个为 True 的值,如果所有的运算数都是 False,取最后一个值
print(0 or [] or "lisi" or 5 or "ok")# lisi
print(0 or [] or {} or ())# ()
疾风怪盗 发表于 2020-9-19 17:02
and优先于or
若 and 的左侧逻辑值为 True,则输出其后的表达式
若 or 的左侧逻辑值为 True,直接输出 or ...
谢谢大神答疑^-^{:5_106:} sunrise085 发表于 2020-9-19 18:20
3 and 5 + True or False
就是先算5+True啊,布尔类型是int类型的子类,True为1,所以5+True 为6
然后就 ...
哇!!!感谢大神答疑!!!!{:5_106:}
懂啦懂啦~~~ 小莫非 发表于 2020-9-20 06:41
感谢大神答疑!!!{:5_106:}
巩固了一遍运算符优先级呢~ 给梨小三斤 发表于 2020-9-22 15:35
感谢大神答疑!!!
巩固了一遍运算符优先级呢~
不客气{:10_256:}{:10_279:} 这011讲的答案写着3 and 5 的结果为 5。True 和 False 参与运算是是作 1 和 0 使用的,所以结果为 6.
还以为是先3 and 5 的结果为 5,然后在5+1等于6 所以课后习题的解释是错的,至少是歧义
页:
[1]