鱼C论坛

 找回密码
 立即注册
查看: 1047|回复: 2

[已解决]python问题

[复制链接]
发表于 2022-2-5 22:10:11 | 显示全部楼层 |阅读模式

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

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

x
在逻辑操作符的运算过程中
为什么
0 or False输出得False
False or 0输出得0
在这个里面False相当于0,那如果写成这样:
0 or False输出得0
False or 0输出得False
是对的吗?


布尔类型的True和False能当作整数1和0对待,意义相同,那运算结果中,两者的写法是不是可以互相随意变换。
最佳答案
2022-2-5 22:36:42
本帖最后由 isdkz 于 2022-2-5 22:48 编辑

非零即True,零即False

and:左边的表达式的值为False时(即一个为零的值),and逻辑运算表达式的值就是它左边的表达式的值,因为与运算一假则假,自然不用再看右边的表达式了,否则and运算就是右边表达式的值
同理,or:    左边的表达式的值为True时(即一个非零的值),or逻辑运算表达式的值就是它左边的表达式的值,因为或运算一真则真,否则or运算就是右边表达式的值

这是and 和 or 的短路机制
and 和 or 运算的结果是看它两边的表达式的值的

所以并不是说运算时结果是可以随意变换的,逻辑运算的结果是根据短路机制的

因为bool类是int类的子类,可以用 issubclass(bool, int) 来查看
所以也就在数学运算中bool类和其它数据类型进行数学运算时会自动类型上升为它的父类int类
所以自然可以把bool类型当做0和1代入数学运算中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-5 22:36:42 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-2-5 22:48 编辑

非零即True,零即False

and:左边的表达式的值为False时(即一个为零的值),and逻辑运算表达式的值就是它左边的表达式的值,因为与运算一假则假,自然不用再看右边的表达式了,否则and运算就是右边表达式的值
同理,or:    左边的表达式的值为True时(即一个非零的值),or逻辑运算表达式的值就是它左边的表达式的值,因为或运算一真则真,否则or运算就是右边表达式的值

这是and 和 or 的短路机制
and 和 or 运算的结果是看它两边的表达式的值的

所以并不是说运算时结果是可以随意变换的,逻辑运算的结果是根据短路机制的

因为bool类是int类的子类,可以用 issubclass(bool, int) 来查看
所以也就在数学运算中bool类和其它数据类型进行数学运算时会自动类型上升为它的父类int类
所以自然可以把bool类型当做0和1代入数学运算中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-2-5 22:36:48 | 显示全部楼层
布尔值一般用于执行 if、for、while 条件语句。不要太执着于形式到底该是 False 还是 0,没有意义。主要是看你要用作什么,用在哪里,以下为例子。

例子:
0 可以当作 False
0.0000 可以当作 False
[] 可以当作 False(空列表)
None 可以当作 False

1 可以当作 True
13 可以当作 True
3.145 可以当作 True
[5, 6, 7] 可以当作 True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 13:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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