鱼C论坛

 找回密码
 立即注册
查看: 761|回复: 8

[已解决]python小白的大白问题....

[复制链接]
发表于 2018-8-20 20:44:04 | 显示全部楼层 |阅读模式

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

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

x
如图,上面说 3 or 4 == 3,所以答案是:4      可是明明是0 or 0 or 4 or 6 or 9 ....为什么答案不是0呢?
最佳答案
2018-8-20 22:56:59
简单,只有 0 为非,其他的非零值为真
3 and 4 == 4    >>    真 and 真 == 真,既然是真,那取哪一个都无所谓,最简单就是返回最后一个判断的
3 or 4 == 3    >>    【或】,其一为真就可以了,第一个非零,为真,直接返回(短路逻辑)

(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
【真】取反==假  or 假与真==假(短路)or (4) or (6) or(9)
都是 or 判断,前面是假。只要找到一个【真】就可以了。
第一个找到的是 4 ,短路逻辑
1534768631(1).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-20 20:46:17 | 显示全部楼层
因为那是这种逻辑只适用于条件符合的情况下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 20:52:46 | 显示全部楼层
无符号整形 发表于 2018-8-20 20:46
因为那是这种逻辑只适用于条件符合的情况下。

什么意思?? 为什么0不符合条件?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-20 20:55:44 | 显示全部楼层
Faye_Ku 发表于 2018-8-20 20:52
什么意思?? 为什么0不符合条件?

你理解or的作用和and的作用吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-20 22:15:49 | 显示全部楼层
条件A and 条件B  表示判断条件A和条件B是否都成立,Python在执行时如果遇到条件A为假,就直接把整体判断结果定为条件A的结果(如0 and 4为0),不去管条件B了,这个叫短路逻辑。
对于or,只需要一个条件为真,这时如果第一个条件为真(如3 or 4为3),就不需要去管第二个条件了,直接把整体判断结果定为第一个条件的结果,但如果第一个条件为假,和and不同,or不能直接断定整体为假,还要看第二个条件,所以这时候就把整体结果定为第二个条件的结果(如0 or 4为4)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 22:48:49 | 显示全部楼层
19304270021304 发表于 2018-8-20 22:15
条件A and 条件B  表示判断条件A和条件B是否都成立,Python在执行时如果遇到条件A为假,就直接把整体判断结 ...

短路逻辑我懂了,可是这里为什么0or0or4or6or9==4呢?为什么0是假的呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-20 22:49:51 | 显示全部楼层
无符号整形 发表于 2018-8-20 20:55
你理解or的作用和and的作用吧?

我理解,短路逻辑我也懂,不懂0or0or4or6or9为什么会出来4,我觉得是0啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-20 22:56:59 | 显示全部楼层    本楼为最佳答案   
简单,只有 0 为非,其他的非零值为真
3 and 4 == 4    >>    真 and 真 == 真,既然是真,那取哪一个都无所谓,最简单就是返回最后一个判断的
3 or 4 == 3    >>    【或】,其一为真就可以了,第一个非零,为真,直接返回(短路逻辑)

(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
【真】取反==假  or 假与真==假(短路)or (4) or (6) or(9)
都是 or 判断,前面是假。只要找到一个【真】就可以了。
第一个找到的是 4 ,短路逻辑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-21 10:08:38 | 显示全部楼层
claws0n 发表于 2018-8-20 22:56
简单,只有 0 为非,其他的非零值为真
3 and 4 == 4    >>    真 and 真 == 真,既然是真,那取哪一个都无 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 18:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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