if - else 条件分支还可以使用 and - or,的 疑问
情况如图这里确实有些问题,但是甲鱼哥题目中也说的大多数的 if-else 结构 可以用 and-or 来替换,没有说全部都可以
先了解下短路逻辑:
短路逻辑规则如下:
表达式从左至右运算,若 or 的左侧逻辑值为 True ,则短路 or 后所有的表达式(不管是 and 还是 or),直接输出 or 左侧表达式 。
若 or 的左侧逻辑值为 False ,则输出or右侧的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果
表达式从左至右运算,若 and 的左侧逻辑值为 False ,则短路其后所有 and 表达式,直到有 or 出现,输出 and 左侧表达式到 or 的左侧,参与接下来的逻辑运算。
若 and 的左侧逻辑值为 True,则输出其后的表达式,不论其后表达式是真是假,整个表达式结果即为其后表达式的结果
若 or 的左侧为 False ,或者 and 的左侧为 True 则不能使用短路逻辑。
然后我们开始解析上三行代码:
"love" and 520 or 404根据短路逻辑: 先判断 "love" and 520 ,因为 and 两边都为真,那么返回右边的值 520
之后表达式为 520 or 404,因为 or 只要为真就直接返回,所以返回 520
"love" and False or 404根据短路逻辑:先判断 "love" and False ,因为右边为 False ,则返回 False
之后表达式为 False or 404,同理因为 or 只要为真就直接返回,因为左边为 False ,所以返回右边的值 404
"love" and 0 or 404根据短路逻辑:先判断 "love" and 0 ,因为右边为 0 ,则返回 0
之后表达式为 0 or 404,同理因为 or 只要为真就直接返回,因为左边为 0 ,所以返回右边的值 404
Twilight6 发表于 2022-5-12 13:01
这里确实有些问题,但是甲鱼哥题目中也说的大多数的 if-else 结构 可以用 and-or 来替换,没有说全部都 ...
1、甲鱼说的少数情况是这2种就是吧
a、"love" and False or 404
根据短路逻辑:先判断 "love" and False ,因为右边为 False ,则返回 False
之后表达式为 False or 404,同理因为 or 只要为真就直接返回,因为左边为 False ,所以返回右边的值 404
b、"love" and 0 or 404
根据短路逻辑:先判断 "love" and 0 ,因为右边为 0 ,则返回 0
之后表达式为 0 or 404,同理因为 or 只要为真就直接返回,因为左边为 0 ,所以返回右边的值 404
2、我根据你的总结,自己给自己出了个题,做了个相当于过程图(只是有个疑问就是图中所指的and左侧表达式,是第一个and还是最后and,应该是第一个and左侧的0吧,(0是可以叫表达式,还是操作数?);
你的总结受益良多谢谢!
lbf4325 发表于 2022-5-12 16:11
1、甲鱼说的少数情况是这2种就是吧
a、"love" and False or 404
流程图画的不错,就是优先级错了,not > and > or 优先级 and 比 or 大 所以流程是这样的:
0 or 0 and 1 and 3 or 7 and 0 and 2 and 6
0 or (0 and 1 and 3) or (7 and 0 and 2 and 6)
0 or 0 or (7 and 0 and 2 and 6)
0 or 0 or 0
0
Twilight6 发表于 2022-5-12 16:22
流程图画的不错,就是优先级错了,not > and > or 优先级 and 比 or 大 所以流程是这样的:
搜噶,谢谢! 我刚直接从左至右! 阅读理解能力确实差点事{:10_256:}{:10_256:}{:10_256:} sls111 发表于 2022-5-13 09:53
阅读理解能力确实差点事
你想表达什么?
页:
[1]