鱼C论坛

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

[已解决]11节课课后第二题

[复制链接]
发表于 2022-11-3 15:35:03 | 显示全部楼层 |阅读模式

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

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

x
2. 请问下面表达式的值是什么?
>>> 3 and 5 + True or False

答案:先是基于短路逻辑(从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值),所以 3 and 5 的结果为 5。然后,True 和 False 参与运算时是作 1 和 0 使用的,所以结果是 5 + 1 等于 6

疑问: “+”的优先级高于‘and'高于'or',为什么不先算5+true呢?
最佳答案
2022-11-4 04:55:53
感谢指出,当时在写答案解析的时候确实看飘了(忘了考虑运算符优先级)~

这里应该先考虑运算符优先级,加号(+)的优先级比逻辑运算符的优先级高,所以先运算加法,即 3 and (5 + True) or False。

当 True 参数运算时,将当作数字 1 来使用,所以结果是 3 and 6 or False。

接着基于短路逻辑(从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值),所以 3 and 6 的结果为 6。

同样的道理,基于短路逻辑,6 or False 第一个操作数的值可以确定逻辑运算的结果,因此最终结果是 6。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-11-3 15:37:33 | 显示全部楼层
你的理解是正确的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-11-3 15:58:13 | 显示全部楼层
本帖最后由 jackz007 于 2022-11-3 16:12 编辑
  1. 3 and (5 + True) or False
复制代码

        你的疑问很有道理,在 and 、+、or 三个操作符中,优先级以 +、and、or 的顺序降低。
  1. 5 + True                  # 先计算此表达式的值,True 的算数值为 1,表达式的值是 6
  2. 3 and 5 + True            # 再计算此表达式,此表达式的核心操作符是 and,and 左边是 3,逻辑值为 True,结果由 and 右边决定,右边是 5 + True,值为 6,所以,表达式的值是 6
  3. 3 and 5 + True or False   # 最后计算此表达式的值,此表达式的核心操作符是 or,or 的左边是 3 and 5 + True,值为 6,逻辑值是 True,就此,定下了整个表达式的值 6
复制代码

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

使用道具 举报

发表于 2022-11-3 18:36:57 | 显示全部楼层


确实,这里答案应该是错了

应该先 5 + True = 6  之后判断:

3 and 6 or False ---> 3 and 6 返回 6   ---> 6 or False 返回 6,所以最终结果为 6

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

使用道具 举报

发表于 2022-11-4 04:55:53 | 显示全部楼层    本楼为最佳答案   
感谢指出,当时在写答案解析的时候确实看飘了(忘了考虑运算符优先级)~

这里应该先考虑运算符优先级,加号(+)的优先级比逻辑运算符的优先级高,所以先运算加法,即 3 and (5 + True) or False。

当 True 参数运算时,将当作数字 1 来使用,所以结果是 3 and 6 or False。

接着基于短路逻辑(从左往右,只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值),所以 3 and 6 的结果为 6。

同样的道理,基于短路逻辑,6 or False 第一个操作数的值可以确定逻辑运算的结果,因此最终结果是 6。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 11:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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