鱼C论坛

 找回密码
 立即注册
查看: 2002|回复: 4

[技术交流] python课后习题答案解释有误???

[复制链接]
发表于 2021-8-13 16:41:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
来源:鱼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.

大家说,我给的解释是不是才是正解呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-13 16:48:25 | 显示全部楼层
你应该是对的
看这两个例子  就能知道了

>>> 5 or 0 +1
5
>>> 0 and 5+1
0
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-8-13 20:07:25 | 显示全部楼层
wp231957 发表于 2021-8-13 16:48
你应该是对的
看这两个例子  就能知道了

谢谢兄弟热心回复,感觉你例子举得很好!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-25 13:35:23 | 显示全部楼层
确实   解析不太对
要先注意运算优先级      这题的短路逻辑体现在最后判断的or
>>> 3 and 5 + True or False
6
>>> 3 and 1 + True or False
2
>>> 3 and 0 + True or False
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-9-6 18:03:03 | 显示全部楼层
本帖最后由 傻眼貓咪 于 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 是真)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 10:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表