鱼C论坛

 找回密码
 立即注册
查看: 3935|回复: 5

[已解决]做11讲作业时的疑问

[复制链接]
发表于 2022-12-22 21:57:14 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 朱丽花 于 2022-12-22 22:51 编辑


请问为什么结果不是直接基于“短路逻辑”而显示0哎
最佳答案
2022-12-22 23:28:40
朱丽花 发表于 2022-12-22 22:54
才发现图没发出来,已经改了,谢谢大佬


因为python中任何对象都可以作为逻辑操作符的操作对象(有一些或者说大部分的编程语言只支持布尔类型来参与到逻辑表达式中),所以 python 中任何对象都可以作为逻辑表达式的值

在 python 中所有对象的零值(整数的零值为0,浮点数的零值为0.0,列表的零值为{} 等等)被判定为 False 之外,其它对象都被判定为 True,

短路原则就是如果左值已经可以确定整个表达式的值就不再看右值

or 运算为一真则真,所以只要 or 运算的左值等同于 True(也就是任何对象的非零值),则结果为左值,否则即为右值;而 and 运算为一假则假,所以只要 and 运算的左值等同于 False(也就是任何对象的零值),则结果为左值,否则即为右值

所以 0 or False 中的 0 不能确定整个表达式的值,因为 0 不为真,所以 0 or False 的结果为它的右值,即 False,然后 0 or False or False 则成了 False or False,左值还是不为真,所以结果为右值,即 False

图
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-12-22 22:22:01 | 显示全部楼层
把题目发下看看呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-22 22:54:03 | 显示全部楼层

才发现图没发出来,已经改了,谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-22 23:27:46 | 显示全部楼层
朱丽花 发表于 2022-12-22 22:54
才发现图没发出来,已经改了,谢谢大佬

逻辑运算返回值即逻辑值(True、False或者1、0),所以可以理解这里的False和0是等价的
参考文档:https://fishc.com.cn/forum.php?m ... ight=0%2Bor%2BFalse
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-22 23:28:40 | 显示全部楼层    本楼为最佳答案   
朱丽花 发表于 2022-12-22 22:54
才发现图没发出来,已经改了,谢谢大佬


因为python中任何对象都可以作为逻辑操作符的操作对象(有一些或者说大部分的编程语言只支持布尔类型来参与到逻辑表达式中),所以 python 中任何对象都可以作为逻辑表达式的值

在 python 中所有对象的零值(整数的零值为0,浮点数的零值为0.0,列表的零值为{} 等等)被判定为 False 之外,其它对象都被判定为 True,

短路原则就是如果左值已经可以确定整个表达式的值就不再看右值

or 运算为一真则真,所以只要 or 运算的左值等同于 True(也就是任何对象的非零值),则结果为左值,否则即为右值;而 and 运算为一假则假,所以只要 and 运算的左值等同于 False(也就是任何对象的零值),则结果为左值,否则即为右值

所以 0 or False 中的 0 不能确定整个表达式的值,因为 0 不为真,所以 0 or False 的结果为它的右值,即 False,然后 0 or False or False 则成了 False or False,左值还是不为真,所以结果为右值,即 False
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-23 08:22:43 | 显示全部楼层
在 0 or False or False 中,Python 会从左至右计算,首先计算 0 or False,然后在计算 (0 or False) or False.

在 0 or False 中,这个式子的值并不由 0 决定。因为 0 or 0 = 0,0 or 1 = 1,这个式子的值由右边的数决定,此时就会根据短路逻辑返回"False"。

因此,原式的值就是 False or False,再次根据上面的过程,得出整个式子的值是False
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 17:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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