鱼C论坛

 找回密码
 立即注册
查看: 3814|回复: 11

[已解决]3 and 5 + True or False为什么答案是6

[复制链接]
发表于 2020-9-19 16:57:05 | 显示全部楼层 |阅读模式

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

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

x
按优先级算不是应该先算 5 + True 吗?为什么答案是先算的 3 and 5呢?
最佳答案
2020-9-19 18:20:58
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 的运算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-19 16:59:49 | 显示全部楼层
为什么说答案是先算的3 and 5?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 17:02:02 | 显示全部楼层
and优先于or
若 and 的左侧逻辑值为 True,则输出其后的表达式
若 or 的左侧逻辑值为 True,直接输出 or 左侧表达式
5+true=6,不是这么计算的么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 17:03:28 | 显示全部楼层
https://baike.baidu.com/item/运算符优先级/4752611?fr=aladdin
先and再or
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 18:20:58 | 显示全部楼层    本楼为最佳答案   
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 的运算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-20 06:41:12 | 显示全部楼层
# 逻辑与运算,只有所有的运算数都是 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 ())  # ()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 15:32:47 | 显示全部楼层
疾风怪盗 发表于 2020-9-19 17:02
and优先于or
若 and 的左侧逻辑值为 True,则输出其后的表达式
若 or 的左侧逻辑值为 True,直接输出 or ...

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

使用道具 举报

 楼主| 发表于 2020-9-22 15:33:47 | 显示全部楼层
sunrise085 发表于 2020-9-19 18:20
3 and 5 + True or False
就是先算5+True啊,布尔类型是int类型的子类,True为1,所以5+True 为6
然后就 ...

哇!!!感谢大神答疑!!!!
懂啦懂啦~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-22 15:35:40 | 显示全部楼层

感谢大神答疑!!!
巩固了一遍运算符优先级呢~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-23 07:39:57 | 显示全部楼层
给梨小三斤 发表于 2020-9-22 15:35
感谢大神答疑!!!
巩固了一遍运算符优先级呢~

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

使用道具 举报

发表于 2020-11-12 00:37:18 | 显示全部楼层
捕获.PNG 这011讲的答案写着3 and 5 的结果为 5。True 和 False 参与运算是是作 1 和 0 使用的,所以结果为 6.
还以为是先3 and 5 的结果为 5,然后在5+1等于6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-10 21:04:10 | 显示全部楼层
所以课后习题的解释是错的,至少是歧义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 21:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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