python课后习题答案解释有误???
来源:鱼C论坛»论坛›技术交流区›Python交流›《零基础入门学习Python》【最新版】›第011讲:短路逻辑和运算符优先级 | 课后测试题及答案题目:请问下面表达式的值是什么?
>>> 3 and 5 + True or False
标准答案:6。
解析:基于“短路逻辑”(从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值),3 and 5 的结果为 5。另外,True 和 False 参与运算是是作 1 和 0 使用的,所以结果为 6。
我的质疑:
按照运算优先级来看,题目中的 加号排第一,and 排第二,or排第三。 那么以上的答案解析就不对,应该是:
3 and (5+true) or False, 即
3 and 6 or False
3 and 6 结果为 6,6 or False,结果还是6.
大家说,我给的解释是不是才是正解呢? 你应该是对的
看这两个例子就能知道了
>>> 5 or 0 +1
5
>>> 0 and 5+1
0
>>> wp231957 发表于 2021-8-13 16:48
你应该是对的
看这两个例子就能知道了
谢谢兄弟热心回复,感觉你例子举得很好!{:5_106:} 确实 解析不太对
要先注意运算优先级 这题的短路逻辑体现在最后判断的or
>>> 3 and 5 + True or False
6
>>> 3 and 1 + True or False
2
>>> 3 and 0 + True or False
1
本帖最后由 傻眼貓咪 于 2021-9-6 18:04 编辑
除了指數運算符(**),位元符(~+-),乘除符,取餘/取商符(*/%//)以外,
最高優先級就是加減法(+-),而邏輯符(and or)處於下位優先級
正解:3 and (5 + True) or False
3 and 5 + True or False
= 3 and (5 + True) or False
= 3 and (5 +1) # 只要前面為真,or 後面不重要
= 3 and 6 # 當前後都是真時,and 就取後值,or 就取前值
= 6
# 注:除了 0 任何數字都是真 (3 是真,6 是真)
页:
[1]