鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

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

[复制链接]
发表于 2025-12-10 10:47:19 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
@FishC “短路逻辑”最核心的描述是?
A. 自右向左逐个求值
B. 总是求值全部操作数
C. 能确定结果时停止求值
D. 只比较布尔值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-10 10:47:50 | 显示全部楼层
@FishC 关于 Python 运算符优先级,以下说法错误的是?
A. 乘法优先于加法
B. 比较运算符优先于 and
C. not 优先于 and
D. or 优先于 and
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-10 10:48:22 | 显示全部楼层
Rokcy 发表于 2025-12-10 10:47
@FishC 关于 Python 运算符优先级,以下说法错误的是 ...


关于 Python 运算符优先级,错误的说法是 D. or 优先于 and。

解释如下:

A. 乘法优先于加法:正确,因为乘法运算符 * 的优先级高于加法运算符 +

B. 比较运算符优先于 and:正确,例如 == 的优先级高于逻辑运算符 and

C. not 优先于 and:正确,逻辑非 not 的优先级高于逻辑与 and

D. or 优先于 and:错误,实际上逻辑与 and 的优先级高于逻辑或 or,所以 or 并不优先于 and。

在 Python 中,逻辑运算符的优先级顺序为:not > and > or

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

使用道具 举报

发表于 2025-12-10 10:49:14 | 显示全部楼层
Rokcy 发表于 2025-12-10 10:47
@FishC “短路逻辑”最核心的描述是?
A. 自右向左逐 ...

“短路逻辑”最核心的描述是:能确定结果时停止求值。


因此,正确答案是 C

简单解释:短路逻辑是指在逻辑运算(如与、或)中,当第一个操作数已经能够决定整个表达式的结果时,就不再计算第二个操作数。例如,在表达式 a && b 中,如果 a 为假,则无论 b 是什么,结果都为假,因此不会计算 b。这提高了效率并允许一些有用的编程技巧。

其他选项分析:
A. 自右向左逐个求值:描述的是某些运算符的求值顺序,并非短路逻辑的核心。
B. 总是求值全部操作数:这与短路逻辑完全相反。
D. 只比较布尔值:逻辑运算涉及布尔值,但短路逻辑的关键在于求值的中止,而不只是布尔比较。

所以,最核心的描述是选项 C。

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

使用道具 举报

发表于 2026-1-5 11:46:58 | 显示全部楼层
@FishC 关于 Python 运算符优先级,以下说法错误的是?
A. 乘法优先于加法
B. 比较运算符优先于 and
C. not 优先于 and
D. or 优先于 and
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2026-1-5 11:47:42 | 显示全部楼层
穆然然然然 发表于 2026-01-05 11:46
@FishC 关于 Python 运算符优先级,以下说法错误的是 ...

关于 Python 运算符优先级,以下说法错误的是?
A. 乘法优先于加法
B. 比较运算符优先于 and
C. not 优先于 and
D. or 优先于 and


错误选项是:D

解释:
Python 运算符优先级从高到低大致为:括号、幂运算、一元运算、乘除、加减、位移、按位运算、比较运算、逻辑非 not、逻辑与 and、逻辑或 or。因此:
- 乘法(*)优先于加法(+),A 正确。
- 比较运算符(如 <、==)优先于 and,B 正确。
- not 优先于 and,C 正确。
- and 优先于 or,所以 or 并不优先于 and,D 错误。

示例:
  1. >>> 3 + 4 * 5  # 乘法优先,结果为 23
  2. >>> 1 < 2 and 3 > 4  # 先比较再 and,结果为 False
  3. >>> not True and False  # not 优先,结果为 False
  4. >>> True or False and False  # and 优先于 or,结果为 True
复制代码

最后一行中,and 先计算,表达式等价于 True or (False and False),因此为 True

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

使用道具 举报

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

使用道具 举报

发表于 2026-1-18 16:46:41 | 显示全部楼层
HT_prandme 发表于 2026-01-18 16:46
@FishC not 1 < 2 的结果是?
A. True
B. False
C. ...

@FishC not 1 < 2 的结果是?


答案:B. False

解释:在 Python 中,比较运算符 < 的优先级高于逻辑运算符 not。因此,表达式 not 1 < 2 会先计算 1 < 2,得到 True,然后执行 not True,最终结果为 False

你可以通过以下代码验证:


  1. >>> not 1 < 2
  2. False
复制代码


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

使用道具 举报

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

使用道具 举报

发表于 2026-1-18 16:55:08 | 显示全部楼层
HT_prandme 发表于 2026-01-18 16:54
@FishC not 1 < 2 的结果是?
A. True
B. False
C. ...


表达式 not 1 < 2 在 Python 中的运算顺序为:先计算比较运算 1 < 2 得到 True,再计算 not True 得到 False。

因此,正确答案是 B. False。

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

使用道具 举报

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

使用道具 举报

发表于 2026-1-21 00:08:33 | 显示全部楼层
paopao102724485 发表于 2026-01-21 00:08
@FishC 下列表达式中,优先级最高的逻辑运算符是?
A ...


在 Python 中,逻辑运算符的优先级顺序为:not > and > or。因此,优先级最高的逻辑运算符是 not

选项 D 中的 + 是算术运算符,不属于逻辑运算符。

所以正确答案是 C。

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

使用道具 举报

发表于 4 天前 | 显示全部楼层
@FishC True and False or True 的结果是?
A. True
B. False
C. None
D. 0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
爱吹的牛 发表于 2026-02-02 22:37
@FishC True and False or True 的结果是?
A. True
...


表达式 True and False or True 在 Python 中的运算结果为 True,因此正确答案是 A。

解释:逻辑运算符的优先级为 and 高于 or,因此表达式等价于 (True and False) or True。先计算 True and False 得到 False,再计算 False or True 得到 True

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

使用道具 举报

发表于 4 天前 | 显示全部楼层
@FishC 0 and 3 的结果是?
A. 0
B. 3
C. True
D. False
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
爱吹的牛 发表于 2026-02-02 22:40
@FishC 0 and 3 的结果是?
A. 0
B. 3
C. True
D. ...

0 and 3 的结果是?

在 Python 中,and 运算符是短路运算符:从左到右求值,如果第一个操作数为假(falsy),则返回第一个操作数;否则返回第二个操作数。因为 0 是假值,所以 0 and 3 返回 0

因此,正确答案是 A. 0。

验证代码:

  1. >>> 0 and 3
  2. 0
复制代码

注意:结果不是布尔值,所以不是 True 或 False。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-6 20:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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