Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

PyFirst

03. 选择迷宫

上一章我们学会了用变量存储数据。但现实世界不只是"存东西"——你每天都在做选择:下雨就带伞,肚子饿就吃饭,周末就睡懒觉。程序也一样,需要学会"看情况行事"。

🗺️ Python 魔法学院

你站在一座巨大的迷宫入口。前方有三条岔路——每条路通往不同的命运。左边是宝藏,右边是陷阱,中间是未知。

今天你将学习「抉择术」——用 if/elif/else 让程序在岔路口做出判断。每个条件都是一把钥匙,只有正确的判断才能打开通往下一关的大门。


3.1 如果……就……:if 语句

🗺️ 程序的选择流程图

在写代码之前,先看看程序是怎么"做选择"的。以"下雨天出门"为例,程序的大脑里会经历这样一个过程:

        ┌──────────┐
        │  开始    │
        └────┬─────┘
             │
             ▼
      ┌─────────────┐
      │ 天气是下雨吗?│
      └──┬───────┬──┘
         │       │
      是 │       │ 否
         │       │
         ▼       ▼
   ┌────────┐  ┌──────┐
   │ 带伞出门 │  │直接出门│
   └───┬────┘  └──┬───┘
       │          │
       └────┬─────┘
            │
            ▼
       ┌────────┐
       │  结束   │
       └────────┘

这个图就是流程图——编程里最经典的工具。菱形是"判断",矩形是"行动",箭头是"走向"。计算机每次走到菱形那里,就会像一个交警一样:“停下!先判断,再决定走哪条路。”

Python 最基本的判断结构叫 if。它的逻辑和日常生活一模一样:

如果 天气 == "下雨":
    带伞出门

写成 Python 代码:

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

注意两个关键细节:


3.2 比较运算符:判断的依据

想让程序"判断",你得告诉它判断什么。Python 提供了一套比较运算符:

运算符含义例子结果
==等于5 == 5True
!=不等于5 != 3True
>大于5 > 3True
<小于5 < 3False
>=大于等于5 >= 5True
<=小于等于3 <= 5True
Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

💡 最容易搞混= 是赋值,== 是"等于吗?"。if x = 5 会报错,要写 if x == 5

🎮 动手做:改一下符号看看结果怎么变

试试把上面那个代码块的 >= 改成 <,看看结果怎么变?再把 60 改成 90先猜一猜,再动手改!

🧪 实验精神:编程最好的学习方式就是"改一个东西,看看会发生什么"。大胆改,不会把电脑弄坏的!如果报错了,看看错误提示——每条报错信息都在教你一个知识点。


3.3 否则怎么办:else

只有 if 是"单向选择"。加入 else,你就能处理"如果不是这样,那就那样":

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

3.4 多重选择:elif

🤔 为什么还需要 elif?

前面学了 if(一种情况)和 else(两种情况),它们已经能处理"及格/不及格"的问题了。但如果成绩要分 A/B/C/D/F 五种等级呢?

让我们看看这个难题是怎么一步步解决的:

第一步:只用 if — 能判断一种情况

if score >= 90:     # 只能判断"是不是 A"
    print("A")

第二步:加 else — 能判断两种情况

if score >= 60:     # 及格一种
    print("及格")
else:               # 不及格一种
    print("不及格")

→ 这只能分两种!如果我想分五种(A/B/C/D/F),怎么办?🤯

第三步:用多个 if 串联 — 能判断多种了,但有 bug!

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

→ 如果 score = 95,它会打印 A、B、C 全出来!因为 95 同时满足三个条件!

第四步:加 elif — 完美解决!

if score >= 90:     print("A")
elif score >= 80:   print("B")
elif score >= 70:   print("C")

elif 是 “else + if” 的缩写,意思是"否则,如果……"。一旦某个条件满足了,后面的 elif 全部跳过,不会重复执行!

现实中的选择往往不止两种。比如考试成绩分 A/B/C/D/F 五个等级。这时用 elif(else + if):

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

💡 执行顺序很重要:Python 从上往下检查,只要碰到第一个满足的条件,就会执行并跳过后面所有条件


3.5 逻辑运算符:组合多个条件

有时候一个条件不够,需要"同时满足"或"满足其中一个":

运算符含义例子
and两边都要为 Trueage >= 18 and age <= 60
or只要一边为 Truescore == 100 or score == 99
not取反not is_raining

🧠 真相表:and 和 or 到底怎么判断?

下面这个表叫真值表(Truth Table),它列出了所有可能的情况。把它当成"and/or 的说明书":

and(与):两边都要 True,结果才是 True

条件 A条件 BA and B 结果生活例子
TrueTrueTrue有票 满 12 岁 → 能进电影院
TrueFalseFalse有票 没满 12 岁 → 不能进
FalseTrueFalse没票 满 12 岁 → 不能进
FalseFalseFalse没票 没满 12 岁 → 不能进

💡 记口诀and 像"挑剔的家长"——两个都要好,差一个都不行!

or(或):只要一边 True,结果就是 True

条件 A条件 BA or B 结果生活例子
TrueTrueTrue爸爸妈妈来接 → 都来了,当然行
TrueFalseTrue爸爸来接妈妈没来 → 爸爸来了就行
FalseTrueTrue爸爸没来妈妈来接 → 妈妈来了就行
FalseFalseFalse爸爸没来 妈妈也没来 → 没人接 😢

💡 记口诀or 像"大方的朋友"——两个有一个就行,只有两个都差才不行!

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

3.6 小挑战:猜数字

让我们用刚学的 if/elif/else 写个小游戏 —— 你心里想一个数字,让程序猜:

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

试着改一下 guess 的值,看看程序会怎么反应。这其实就是二分查找的雏形!


3.7 嵌套判断:选择中的选择

判断里还可以套判断——就像"如果下雨,再判断有没有伞":

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

⚠️ 嵌套不要太深(最多 3 层),否则代码变成"千层饼",谁也看不懂。

3.8 🎮 趣味挑战:智能评分系统

改一下分数,看看系统给你什么评价:

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

💡 试试看:把上面的四科成绩改成你想要的分数,看看系统怎么评价你。把某一科改成低于 60 分,会有什么不同的评语?


3.9 动手练习

Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...
📋 参考答案(点击展开)
Python
14
准备加载编辑器...
🔧 正在准备编程环境...0%
等待编辑器...
等待 Python 环境...

3.10 本章小结

你学到了什么具体内容
✅ if 语句基本的"如果……就……"判断结构
✅ 比较运算符== != > < >= <=
✅ else不满足 if 时的备选方案
✅ elif处理三种及以上情况
✅ 逻辑运算符and(与)、or(或)、not(非)
✅ 嵌套判断判断里面套判断(但别套太深)

🚀 下一章预告:选择让程序变聪明,但如果你想让程序重复做一件事呢?下一章,我们进入循环的世界——让计算机帮你自动"打工"!

3.11 📚 参考资料

资源链接说明
Python 官方教程 — 控制流docs.python.org/3/tutorial/controlflow.html官方 if/for/while 等控制流详解
Real Python — 条件语句realpython.com/python-conditional-statements深入理解 Python 条件和逻辑运算
Python 布尔与逻辑运算realpython.com/python-booleanPython 中的布尔类型与逻辑运算详解

本章内容基于 Python 官方教程 改编,遵循 PSF License 许可。