鱼C论坛

 找回密码
 立即注册
查看: 1741|回复: 6

[已解决]if - else 条件分支还可以使用 and - or,的 疑问

[复制链接]
发表于 2022-5-12 12:04:36 | 显示全部楼层 |阅读模式

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

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

x
情况如图
QQ浏览器截图20220512120258.png
最佳答案
2022-5-12 13:01:32


这里确实有些问题,但是甲鱼哥题目中也说的大多数的 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



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-5-12 13:01:32 | 显示全部楼层    本楼为最佳答案   


这里确实有些问题,但是甲鱼哥题目中也说的大多数的 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



评分

参与人数 2荣誉 +4 鱼币 +5 贡献 +5 收起 理由
小甲鱼 + 2 + 3 + 3 鱼C有你更精彩^_^
lbf4325 + 2 + 2 + 2 不辞劳苦,耐心指导!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2022-5-12 16:11:22 | 显示全部楼层
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是可以叫表达式,还是操作数?);
    你的总结受益良多谢谢!
未命名.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-12 16:22:38 | 显示全部楼层
lbf4325 发表于 2022-5-12 16:11
1、甲鱼说的少数情况是这2种就是吧

a、"love" and False or 404

[b]

流程图画的不错,就是优先级错了,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


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

使用道具 举报

 楼主| 发表于 2022-5-12 16:35:10 | 显示全部楼层
Twilight6 发表于 2022-5-12 16:22
流程图画的不错,就是优先级错了,not > and > or 优先级 and 比 or 大 所以流程是这样的:

搜噶,谢谢! 我刚直接从左至右!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-5-13 09:53:33 | 显示全部楼层
阅读理解能力确实差点事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-5-13 11:29:55 | 显示全部楼层
sls111 发表于 2022-5-13 09:53
阅读理解能力确实差点事

你想表达什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 08:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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