九、逻辑运算符学习笔记

九、逻辑运算符学习笔记

2026-02-19
Python基础
type
Post
status
Published
date
Feb 19, 2026
slug
python-logical-operators-notes-9
summary
我觉得 and、or、not 这三个单词很简单,但实际用起来才发现坑很多!特别是短路特性和优先级,让我调试了好久。不过掌握之后,写复杂条件判断就轻松多了,代码也更简洁优雅。就像是给 if 语句装上了"组合拳"!
tags
Python数据的存储与运算
Python的逻辑处理
category
Python基础
icon
password
💡 学习感悟:我觉得 and、or、not 这三个单词很简单,但实际用起来才发现坑很多!特别是短路特性和优先级,让我调试了好久。不过掌握之后,写复杂条件判断就轻松多了,代码也更简洁优雅。就像是给 if 语句装上了"组合拳"!

1. 什么是逻辑运算符?

我的理解

现实世界的判断往往不是单一条件,而是多个条件的组合:
  • "年龄大于18岁并且成绩及格"
  • "是会员或者消费满100元"
  • "不是禁用用户"
逻辑运算符就是用来组合这些条件的工具,让程序能处理更复杂的判断逻辑。
📝 我的理解:逻辑运算符就像是条件的粘合剂——把多个简单的条件粘合成一个复杂的判断。没有它们,if 语句就只能做简单的判断了。

2. 逻辑运算符一览

运算符
名称
描述
示例
结果
and
两个条件都为 True 时返回 True
True and False
False
or
至少一个条件为 True 时返回 True
True or False
True
not
对条件取反
not True
False

3. 逻辑与 and

3.1 什么是逻辑与?

逻辑与(and)表示"并且"的关系,只有当所有条件都为 True 时,结果才为 True。
📝 我的理解:and 就像是串联电路——所有开关都闭合(True),电路才通;只要有一个断开(False),电路就断了。

3.2 实际应用场景

📝 我的理解:and 适合"必须同时满足"的场景。比如登录验证,用户名和密码必须同时正确才能登录,用 and 很自然。

4. 逻辑或 or

4.1 什么是逻辑或?

逻辑或(or)表示"或者"的关系,只要有一个条件为 True,结果就为 True。
📝 我的理解:or 就像是并联电路——只要有一个开关闭合(True),电路就通;只有全部断开(False),电路才断。

4.2 实际应用场景

📝 我的理解:or 适合"满足其中一个就行"的场景。比如优惠活动,是 VIP 或者消费满100元都能享受,用 or 很合适。

5. 逻辑非 not

5.1 什么是逻辑非?

逻辑非(not)表示"取反",将 True 变为 False,将 False 变为 True。
📝 我的理解:not 就像是拍照的负片效果——黑的变白,白的变黑。在编程中,not 经常用来检查"不满足某个条件"的情况。

5.2 实际应用场景

📝 我的理解:not 特别适合反向判断的场景。比如检查"是否为空"、"是否未完成",用 not 比写 == False== "" 更简洁 Pythonic。

6. 逻辑运算符的组合使用

6.1 复杂条件判断

📝 我的理解:组合使用的时候,括号很重要!就像数学运算一样,括号可以改变优先级。上面的例子中,is_member and (order_amount >= 100 or is_special_item)(is_member and order_amount >= 100) or is_special_item 是完全不同的意思!

6.2 德摩根定律

📝 我的理解:德摩根定律是数学里的知识,但在编程中也很实用。有时候把 not (A and B) 改成 (not A) or (not B) 会让逻辑更清晰。不过初学者不用强求,先掌握基本用法就好。

7. 短路特性

7.1 什么是短路特性?

逻辑运算符具有"短路"特性:如果已经能确定最终结果,就不会继续计算后面的条件
📝 我的理解:短路特性就像是提前交卷——如果已经知道答案了,后面的题就不用做了。这个特性很有用,可以避免一些错误,还能用来设置默认值。

7.2 and 的短路特性

⚠️ 踩坑记录:我第一次发现短路特性是在调试代码的时候,明明后面的条件会报错,但程序却正常运行了!后来才明白,and 的第一个条件为 False 时,后面的根本不会执行。这个特性可以用来避免空值错误

7.3 or 的短路特性

📝 我的理解:or 的短路特性很酷!username = input() or "匿名用户" 这种写法非常 Pythonic。如果用户输入了内容,就用输入的内容;如果直接回车(空字符串),就用默认值。这种写法比写 if-else 简洁多了。

8. 逻辑运算符的优先级

8.1 优先级顺序

  1. not(最高)
  1. and
  1. or(最低)
⚠️ 踩坑记录:优先级是我踩过最多的坑!特别是 not 的优先级最高,我经常搞错。现在我养成了一个习惯:不管优先级是什么,都用括号明确分组。这样代码更易读,也不容易出错。

9. 实际应用案例

9.1 用户登录验证(完整版)

📝 我的理解:这个登录验证用到了所有的逻辑运算符!not username 检查是否为空,or 检查用户名或密码是否正确,not is_active 检查账号状态。逻辑很清晰,一步步排除错误情况。

9.2 成绩等级评定(复杂条件)

📝 我的理解:成绩评定用到了嵌套的逻辑运算。比如"优秀"的条件是平均分 >= 90 并且每科都 >= 85,这种复杂的条件用 and 和 or 组合起来表达很清晰。

9.3 游戏角色状态判断

📝 我的理解:游戏状态判断是逻辑运算符的经典应用场景。不同的状态组合触发不同的警告,用 and、or、not 组合起来表达很自然。

9.4 表单验证

📝 我的理解:表单验证用到了短路特性not age.isdigit() or not (18 <= int(age) <= 100) 中,如果 age.isdigit() 为 False(不是数字),后面的 int(age) 不会执行,避免了类型转换错误。

10. 遇到的问题和解决

10.1 混淆 and 和 or

⚠️ 踩坑记录:这个错误我犯过!想表达"年龄在18到60之间",结果写成了 or,变成"年龄大于18 或者 小于60",这几乎包含了所有年龄!记住:范围判断用 and,多选一才用 or

10.2 优先级错误

⚠️ 踩坑记录and 的优先级比 or 高,所以 True or False and False 会先算 False and False。如果不确定优先级,一律用括号

10.3 忘记使用括号

⚠️ 踩坑记录:没有括号的复杂条件很难读,也容易出错。我现在的原则是:超过两个条件就用括号分组,哪怕优先级是对的,也要让代码更易读。

10.4 与位运算符混淆

⚠️ 踩坑记录:从其他语言转过来的同学要注意,Python 里 & 是位运算符(按位与),and 才是逻辑运算符。虽然有时候结果一样,但逻辑完全不同!

11. 核心知识点整理

11.1 逻辑运算符速查表

运算符
含义
口诀
类比
and
并且
一假则假,全真才真
串联电路
or
或者
一真则真,全假才假
并联电路
not
真假互换
拍照负片

11.2 短路特性

  • and 短路:第一个为 False,直接返回 False,不检查后面
  • or 短路:第一个为 True,直接返回 True,不检查后面
  • 用途:避免错误、设置默认值

11.3 优先级

建议:复杂条件一律用括号,提高可读性。

11.4 常见错误总结

错误类型
错误示例
正确写法
范围判断用 or
age >= 18 or age <= 60
age >= 18 and age <= 60
混淆 & 和 and
a > 0 & b > 0
a > 0 and b > 0
复杂条件无括号
A and B or C and D
(A and B) or (C and D)
忘记短路特性
if name: if len(name) > 0
if name and len(name) > 0

11.5 需要注意的条件

  • and:必须同时满足多个条件
  • or:满足其中一个条件即可
  • not:反向判断、检查空值
 
推荐云服务

雨云 - 云服务器首选

稳定 · 高速 · 性价比超高

使用优惠码立享折扣,开启你的云端之旅~

一元试用秒级开通24h在线客服

优惠码

zqf
立即访问
Loading...
灵心小窝

灵心小窝

这里不是一个喧闹的地方,只是用来存放一些还不想遗忘的东西。

声明 © 2026 早清风
加载中...