鱼C论坛

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

[已解决]为什么?

[复制链接]
发表于 2021-6-25 17:12:11 | 显示全部楼层 |阅读模式

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

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

x
>>> (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
4


为什么是4  有大牛可以详细讲解下吗?
最佳答案
2021-6-25 17:21:25
原答案
如果你的回答是 0,那么小甲鱼很开心你中招了!答案是:4,not or and 的优先级是不同的:not > and > or,我们按照优先级给它们加上括号:
  1. (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
  2. = = 0 or 0 or 4 or 6 or 9
  3. = = 4
复制代码

为啥是 4?
大家还记得第四讲作业提到的“短路逻辑”吗?3 and 4 = = 4,而 3 or 4 = = 3。
所以答案是:4
温馨提示:为了更好的表达你的程序,小甲鱼再次呼吁有些括号还是不能省下的,毕竟不是所有程序员都跟你一样都将优先级烂透于心的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-6-25 17:21:25 | 显示全部楼层    本楼为最佳答案   
原答案
如果你的回答是 0,那么小甲鱼很开心你中招了!答案是:4,not or and 的优先级是不同的:not > and > or,我们按照优先级给它们加上括号:
  1. (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)
  2. = = 0 or 0 or 4 or 6 or 9
  3. = = 4
复制代码

为啥是 4?
大家还记得第四讲作业提到的“短路逻辑”吗?3 and 4 = = 4,而 3 or 4 = = 3。
所以答案是:4
温馨提示:为了更好的表达你的程序,小甲鱼再次呼吁有些括号还是不能省下的,毕竟不是所有程序员都跟你一样都将优先级烂透于心的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-6-25 17:21:28 | 显示全部楼层
not 1 = 0

0 and 1 = 0

3 and 4 = 4  and中含0,返回0; 均为非0时,返回后一个值

5 and 6 = 6

7 and 8 and 9 = 9

0 or 0 or 4 or 6 or 9 = 4      or中, 至少有一个非0时,返回第一个非0的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-25 17:21:42 | 显示全部楼层
本帖最后由 fish_nian 于 2021-6-25 17:47 编辑

表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。若 or 的左侧逻辑值为 False ,则输出or右侧的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果
表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。若 and 的左侧逻辑值为 True,则输出其后的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果
若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。

原文链接:
https://blog.csdn.net/weixin_30337227/article/details/89885220
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-25 18:24:34 | 显示全部楼层
本帖最后由 灰晨 于 2021-6-25 18:31 编辑

短路逻辑:
从左往右,当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值

and:
左右都为true,才为true
一边是flash,就是flash

or:
一边是true,就是true
左右都为flash,才为flash

下面对象是 False:

1、None;

2、零值:
        a、0(整数);
        b、0.0(浮点数);
        c、0j(虚数);
3、空序列:
        a、空字符串;
        b、空列表;
        c、空元组;
        d、空字典;

其他情况都是 True;True 默认为 1;False 默认为 0;

(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)

先算括号里的

not 1 = not true = false

0 and 1 = false and true = true = 1
3 and 4 = true and true  = true = 4

true1 and true2
返回true2
#第一个是true没办法确定结果,两个都是turn才是true,所以得判断第二个结果

true1 and false1
返回false1
#第一个是true没办法确定结果,两个都是turn才是true,所以得判断第二个结果

false1 and true1
返回false1
#一边是false就是false,第一个是false就能确定是false了,所以第二个是什么无所谓了,python不会去管的

false1 and false2
返回false1
#一边是false就是false,第一个是false就能确定是false了,所以第二个是什么无所谓了,python不会去管的

5 and 6 = 6

7 and 8 and 9 = 8 and 9 = 9

0 or 0 or 4 or 6 or 9 = 4

or一边是true,就是true,左右都为flash,才为flash,第一个值是true的就直接返回第一个的值了,后面是true还是false都不影响,第一个值是false肯定返回第二个值,因为第一个为false,要判断肯定得看第二个值。

全是or的式子里,从左往右,几个数第一个为true的是谁就会返回谁的值,后面都不会理
如果全都为false就是返回最后一个的值

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 23:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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