鱼C论坛

 找回密码
 立即注册
查看: 470|回复: 21

[快问快答] 第011讲:短路逻辑和运算符优先级

[复制链接]
发表于 2025-7-16 02:03:54 | 显示全部楼层 |阅读模式
购买主题 已有 10 人购买  本主题需向作者支付 5 鱼币 才能浏览
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-7-16 08:41:13 | 显示全部楼层
老了,反应太慢了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-17 22:51:51 | 显示全部楼层
为啥快问快答里的not 的优先级比+高了?

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +3 C币 +3 收起 理由
小甲鱼 + 3 + 3 + 3 + 3 感谢指出,已经修正~

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-18 00:23:53 | 显示全部楼层
万水千山走遍 发表于 2025-7-17 22:51
为啥快问快答里的not 的优先级比+高了?

题目应该是 “下列表达式中,优先级最高的逻辑运算符是?”

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-20 21:15:37 | 显示全部楼层
按照短路逻辑不应该是0吗? 批注 2025-07-20 211042.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-27 05:11:39 | 显示全部楼层
无小虚 发表于 2025-7-20 21:15
按照短路逻辑不应该是0吗?

微信截图_20250727051124.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-28 11:32:06 | 显示全部楼层
本帖最后由 无小虚 于 2025-7-28 11:35 编辑


(摸摸脑袋)一切以实践经验为准嘛?蟹蟹蟹蟹
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-29 16:41:18 | 显示全部楼层
无小虚 发表于 2025-7-28 11:32
(摸摸脑袋)一切以实践经验为准嘛?蟹蟹蟹蟹

not 2 先得到 False,然后就变成了 0 or 1 and False
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-29 17:09:19 | 显示全部楼层
小甲鱼的二师兄 发表于 2025-7-29 16:41
not 2 先得到 False,然后就变成了 0 or 1 and False

哦~~
我用kimi辅助搜索了一下:
not永远返回严格的布尔值;
and和or才是短路求值。
0 or 1 and not 2 not严格返回布尔值后
0 or 1 and False 短路求值后
1 and False 短路求值后
False
蟹蟹,真的就是突然懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-29 21:11:04 | 显示全部楼层
@FishC not 1 < 2的结果是?
A. True
B. False
C. 1
D. 2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-29 21:11:27 | 显示全部楼层
36567671 发表于 2025-07-29 21:11
@FishC not 1 < 2的结果是?
A. True
B. False
C.  ...


在Python中,表达式 `not 1 < 2` 的运算顺序如下:  
1. 先计算比较运算 `1 < 2`,结果为 True。  
2. 再计算逻辑非运算 `not True`,结果为 False。  

因此答案是:  
B. False  

验证代码:  
  1.   
  2. print(not 1 < 2)  # 输出 False  
复制代码


注意:  
- 比较运算符(如 <)优先级高于逻辑运算符(如 not),因此实际计算顺序是 not (1 < 2)

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-30 17:09:29 | 显示全部楼层
无小虚 发表于 2025-7-29 17:09
哦~~
我用kimi辅助搜索了一下:
not永远返回严格的布尔值;

下次可以尝试点击「AI解析」
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-7-30 21:35:19 | 显示全部楼层
本帖最后由 无小虚 于 2025-7-30 21:37 编辑
小甲鱼的二师兄 发表于 2025-7-30 17:09
下次可以尝试点击「AI解析」


哈哈哈哈哈哈,欧克欧克,但人家点过了,太简略了,没看懂哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-1 09:11:02 | 显示全部楼层
@FishC 下列表达式中,优先级最高的逻辑运算符是?
A. and
B. or
C. not
D. +
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-1 09:12:04 | 显示全部楼层
miggoshit 发表于 2025-08-01 09:11
@FishC 下列表达式中,优先级最高的逻辑运算符是?
A ...


在 Python 中,逻辑运算符的优先级顺序是:  
1. not 优先级最高。  
2. and 次之。  
3. or 优先级最低。  

选项 D 中的 + 是算术运算符,不是逻辑运算符。虽然它的优先级比所有逻辑运算符都高,但问题指定的是“逻辑运算符”,因此不应考虑它。  

所以,优先级最高的逻辑运算符是:  
C. not  

示例代码演示:  
  1.   
  2. # 示例:not 先于 and 和 or 计算  
  3. result = not True and False  # 等价于 (not True) and False → False and False → False  
  4. print(result)  # 输出 False  

  5. # 对比:如果 or 优先级高(实际不是)  
  6. # 但实际计算顺序:not False or True → (not False) or True → True or True → True  
  7. result2 = not False or True  
  8. print(result2)  # 输出 True  
复制代码

总结:在逻辑运算符中,not 总是最先计算。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-7 21:07:04 | 显示全部楼层
@FishC 0 or 1 and not 2的结果是?
A. True
B. False
C. 0
D. 1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-7 21:07:51 | 显示全部楼层
未来的黑客-TK 发表于 2025-08-07 21:07
@FishC 0 or 1 and not 2的结果是?
A. True
B. Fal ...


在Python中,逻辑运算符的优先级是 not > and > or。因此表达式 0 or 1 and not 2 等价于 0 or (1 and (not 2))

逐步计算:
1. not 2:非零整数被视为真,所以 not 2 结果为 False
2. 1 and False:当 and 遇到真值(1)和假值(False)时,返回假值(False)。
3. 0 or False:当 or 遇到假值(0)和假值(False)时,返回最后一个假值(False)。

最终结果为 False,对应布尔值 False

选项分析:
A. True → 错误
B. False → 正确
C. 0 → 错误(实际是布尔值 False)
D. 1 → 错误

验证代码:

  1. print(0 or 1 and not 2)  # 输出 False
复制代码


答案:B. False

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-12 21:25:05 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-8-14 18:30:50 | 显示全部楼层
本帖最后由 sfqxx 于 2025-8-14 18:32 编辑

@FishC 在Python中,and、or、not三个运算符优先级从高到低依次是?
$A. not > and > or$

$B. and > or > not$

$C. or > and > not$

$D. not > or > and$
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-14 18:31:21 | 显示全部楼层
sfqxx 发表于 2025-08-14 18:30
@FishC 在Python中,and、or、not三个运算符优先级从 ...


在Python中,逻辑运算符的优先级从高到低依次为:

not > and > or

因此正确答案是选项:  
A. not > and > or

验证示例:  
计算表达式 not False and True or False  
1. 先执行 not FalseTrue  
2. 再计算 True and TrueTrue  
3. 最后执行 True or FalseTrue  
结果符合优先级规则。


  1. # 测试代码
  2. result = not False and True or False
  3. print(result)  # 输出 True
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-8 17:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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