鱼C论坛

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

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

[复制链接]
发表于 2025-10-18 10:50:41 | 显示全部楼层
零基础入门学习Python封面
《零基础入门学习Python》
(最新版)
小甲鱼 著
立即购买
@FishC 0 or 4 的结果是?
A. 0
B. 4
C. True
D. False
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-18 10:51:21 | 显示全部楼层
FERW 发表于 2025-10-18 10:50
@FishC 0 or 4 的结果是?
A. 0
B. 4
C. True
D.  ...


答案:B. 4

在Python中,逻辑运算符 or 会返回第一个为真(truthy)的操作数,如果所有操作数都为假(falsy),则返回最后一个操作数。这里,0 是假值,4 是真值,因此 0 or 4 的结果是 4

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

使用道具 举报

发表于 2025-10-18 11:08:23 | 显示全部楼层
@FishC 关于 Python 中的 and 和 or 运算符,以下说法正确的是?
A. 它们都遵循短路逻辑
B. 它们总会计算所有操作数
C. 它们不支持短路逻辑
D. 它们只能用于布尔值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-10-18 11:09:03 | 显示全部楼层
FERW 发表于 2025-10-18 11:08
@FishC 关于 Python 中的 and 和 or 运算符,以下说法 ...


正确答案是 A. 它们都遵循短路逻辑。

解释:
在 Python 中,andor 运算符都遵循短路逻辑(short-circuit evaluation),这意味着它们不会总是计算所有操作数:
- 对于 and:如果第一个操作数为假(False),则直接返回第一个操作数,不会计算第二个操作数。
- 对于 or:如果第一个操作数为真(True),则直接返回第一个操作数,不会计算第二个操作数。

因此,选项 B 和 C 是错误的。此外,这些运算符可以用于任何类型的值(不限于布尔值),所以选项 D 也是错误的。

示例代码:

  1. # and 运算符短路示例
  2. x = 0
  3. y = 5
  4. result1 = x and y  # 由于 x 为假,直接返回 x,不计算 y
  5. print(result1)  # 输出 0

  6. # or 运算符短路示例
  7. result2 = x or y   # 由于 x 为假,计算 y 并返回 y
  8. print(result2)  # 输出 5
复制代码


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

使用道具 举报

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

使用道具 举报

发表于 2025-11-6 10:27:32 | 显示全部楼层
qwerty2200 发表于 2025-11-06 10:26
@FishC 0 and 3 的结果是?
A. 0
B. 3
C. True
D. ...


答案:A. 0

解释:在Python中,逻辑运算符 and 的行为是:如果第一个操作数为假值(如 0),则返回第一个操作数;否则返回第二个操作数。由于 0 是假值,因此 0 and 3 返回 0

代码示例:

  1. print(0 and 3)  # 输出 0
复制代码


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

使用道具 举报

发表于 2025-11-7 14:34:38 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-11-17 20:59:52 | 显示全部楼层
打卡第011讲:短路逻辑和运算符优先级
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2025-11-25 11:34:21 | 显示全部楼层
LMo 发表于 2025-11-25 11:33
@FishC 下列表达式中,优先级最高的逻辑运算符是?
A ...


答案:C. not

在Python中,逻辑运算符的优先级从高到低依次为:not > and > or。因此,not 是优先级最高的逻辑运算符。选项D + 是算术运算符,不属于逻辑运算符。

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

使用道具 举报

发表于 2025-11-25 11:34:28 | 显示全部楼层
@FishC 以下哪个表达式先进行加法运算?
A. 1 + 2 > 3 - 4
B. 1 + (2 > 3) - 4
C. 1 + 2 * 3
D. 1 - 2 and 3 + 4
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-11-25 11:36:20 | 显示全部楼层
LMo 发表于 2025-11-25 11:34
@FishC 以下哪个表达式先进行加法运算?
A. 1 + 2 >  ...


答案:A

在 Python 中,运算符优先级决定了运算顺序。以下是每个选项的分析:

  • 选项 A:表达式 1 + 2 > 3 - 4 中,比较运算符 > 的优先级低于算术运算符 + 和 -,因此先计算 1 + 2(加法)和 3 - 4,其中加法运算最先进行。
  • 选项 B:表达式 1 + (2 > 3) - 4 中,括号内的比较运算 2 > 3 先计算,然后进行加法。
  • 选项 C:表达式 1 + 2 * 3 中,乘法运算符 * 的优先级高于加法,因此先计算 2 * 3,然后进行加法。
  • 选项 D:表达式 1 - 2 and 3 + 4 中,逻辑运算符 and 的优先级低于算术运算符,因此先计算左操作数 1 - 2(减法),然后计算右操作数 3 + 4(加法)。


因此,只有选项 A 中加法运算最先进行。

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

使用道具 举报

发表于 2025-12-1 21:50:08 | 显示全部楼层
@FishC 关于 Python 中的 and 和 or 运算符,以下说法正确的是?
A. 它们都遵循短路逻辑
B. 它们总会计算所有操作数
C. 它们不支持短路逻辑
D. 它们只能用于布尔值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-12-1 21:50:39 | 显示全部楼层
40岁学编程 发表于 2025-12-01 21:50
@FishC 关于 Python 中的 and 和 or 运算符,以下说法 ...


关于 Python 中 andor 运算符的正确说法是 A。

详细说明如下:

A. 它们都遵循短路逻辑
正确。andor 是短路运算符。
*   and:如果第一个操作数为 False(或逻辑假值),则直接返回该值,不再计算第二个操作数。
*   or:如果第一个操作数为 True(或逻辑真值),则直接返回该值,不再计算第二个操作数。

B. 它们总会计算所有操作数
错误。这正是短路逻辑要避免的情况,如上所述。

C. 它们不支持短路逻辑
错误。Python 的 andor 明确支持短路逻辑。

D. 它们只能用于布尔值
错误。andor 可以用于任何类型的操作数。它们返回的是操作数的值本身,而不是强制转换为布尔值。
例如:

  1. result = 3 and 5  # 返回 5,因为 3 为真,继续计算并返回第二个操作数 5
  2. print(result)

  3. result = 0 or 10  # 返回 10,因为 0 为假,继续计算并返回第二个操作数 10
  4. print(result)
复制代码


所以,本题的正确答案是 A

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

使用道具 举报

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

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

使用道具 举报

发表于 3 天前 | 显示全部楼层
2025-12-09_212434.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 前天 10:46 | 显示全部楼层
Rokcy 发表于 2025-12-10 10:45
@FishC True and False or True 的结果是?
A. True
...


答案:A. True

解释:在 Python 中,逻辑运算符 and 的优先级高于 or,因此表达式 True and False or True 被解析为 (True and False) or True。先计算 True and False 得到 False,然后计算 False or True 得到 True,所以最终结果为 True

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

使用道具 举报

发表于 前天 10:46 | 显示全部楼层
@FishC 关于 False or 0 or 4 or 6 or 9,其值是?
A. 0
B. 4
C. 6
D. 9
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 前天 10:47 | 显示全部楼层
Rokcy 发表于 2025-12-10 10:46
@FishC 关于 False or 0 or 4 or 6 or 9,其值是?
A ...


表达式 False or 0 or 4 or 6 or 9 在 Python 中,or 运算符会从左到右求值,并返回第一个为真(Truthy)的值。其中 False0 被视为假(Falsy),而 4 是非零整数,被视为真(Truthy),因此表达式短路返回 4

答案:B. 4

如果需要验证,可以运行以下代码:


  1. print(False or 0 or 4 or 6 or 9)  # 输出 4
复制代码


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 13:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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