零基础学 Python 第3章 | 条件判断:if / elif / else
本章摘要
- 核心目标:让程序学会根据不同条件做选择,实现"如果…就…否则…"的逻辑
- 核心知识点:比较运算符(
==/!=/>/</>=/<=)、逻辑运算符(and/or/not)、if单分支、if-else双分支、if-elif-else多分支、嵌套if、条件表达式(三元运算符) - 实操产出:成绩等级判定程序、闰年判断工具、综合信息录入小程序(第一部分毕业案例)
- 前置基础:第2章
print输出、变量赋值、input输入、数据类型与类型转换
一、写在前面
上一章我们写的程序都是"从头到尾一条路走到底"——代码从上往下依次执行,每一行都会运行。
但现实生活不是这样的:
- 考试 大于 60 分 → 及格,否则 → 不及格
- 年龄 大于等于 18 → 成年,否则 → 未成年
- 天气 是 晴天 且 温度 大于 25 → 出去玩,否则 → 待在家
这些场景有一个共同特征:根据条件决定做什么。Python 用 if / elif / else 来实现这个能力,这是编程中最核心的逻辑之一——条件判断。
二、比较运算符
条件判断的基础是"比较"。Python 提供了 6 个比较运算符,用来比较两个值的大小或是否相等:
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
== |
等于 | 10 == 10 |
True |
!= |
不等于 | 10 != 20 |
True |
> |
大于 | 20 > 10 |
True |
< |
小于 | 5 < 10 |
True |
>= |
大于等于 | 10 >= 10 |
True |
<= |
小于等于 | 5 <= 10 |
True |
比较运算的结果一定是布尔值:True 或 False。
print(10 == 10) # True
print(10 != 20) # True
print(20 > 30) # False
print("abc" == "abc") # True,字符串也可以比较
print("abc" == "ABC") # False,区分大小写
⚠️ 新手最容易犯的错:
=是赋值,==是比较。
age = 18→ 把 18 赋值给 ageage == 18→ 判断 age 是否等于 18在
if语句里用=会导致语法错误,记住:判断用双等号。
三、逻辑运算符
有时候一个条件不够,需要组合多个条件。Python 提供三个逻辑运算符:
3.1 and(并且)
所有条件都为 True,结果才为 True:
# 语文和数学都及格才算通过
chinese = 80
math = 90
print(chinese >= 60 and math >= 60) # True,两门都及格
chinese = 50
math = 90
print(chinese >= 60 and math >= 60) # False,语文没及格
3.2 or(或者)
只要有一个条件为 True,结果就为 True:
# 语文或数学任意一门优秀就算特长生
chinese = 85
math = 55
print(chinese >= 85 or math >= 85) # True,语文达到了
chinese = 70
math = 70
print(chinese >= 85 or math >= 85) # False,都没达到
3.3 not(取反)
把 True 变 False,把 False 变 True:
is_raining = False
print(not is_raining) # True,没下雨
is_student = True
print(not is_student) # False
3.4 逻辑运算真值表
| 条件A | 条件B | A and B | A or B | not A |
|---|---|---|---|---|
| True | True | True | True | False |
| True | False | False | True | False |
| False | True | False | True | True |
| False | False | False | False | True |
口诀:
and全真才真,or有真即真,not真假互换。
四、if 语句:满足条件才执行
4.1 基本结构
if 语句最简单的形式:条件为 True 时执行缩进块内的代码,为 False 时跳过。
age = 20
if age >= 18:
print("你已经成年了")
print("可以办理身份证")
print("程序结束")
运行结果:
你已经成年了
可以办理身份证
程序结束
如果把 age 改成 15:
程序结束
关键:缩进。Python 用缩进(4 个空格)表示哪些代码属于
if语句。缩进在内的代码只有条件为True时才执行,缩进外的代码无论如何都会执行。
4.2 缩进规则
score = 85
if score >= 60:
print("及格了") # ✅ 属于 if,条件满足才执行
print("继续努力") # ✅ 也属于 if
print("检查完毕") # ❌ 不属于 if,无论如何都执行
VS Code 默认按
Tab键自动缩进 4 个空格,不用手动数空格。
五、if-else:二选一
if 只管条件满足时做什么,else 补上条件不满足时做什么:
score = 55
if score >= 60:
print("及格了")
else:
print("不及格,继续努力")
运行结果:
不及格,继续努力
条件满足走 if 分支,不满足走 else 分支,两条路必走其一。
六、if-elif-else:多选一
现实中的判断往往不止两种结果。比如成绩分等级:
- 90 分以上 → 优秀
- 80-89 → 良好
- 60-79 → 及格
- 60 以下 → 不及格

用 elif(else if 的缩写)串联多个条件:
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
运行结果:
良好
执行逻辑:从上往下依次判断,遇到第一个为
True的条件就执行对应分支,然后跳出整个if-elif-else结构,后面的条件不再检查。所以条件顺序很重要。如果把
score >= 60放在最前面,85 分会先命中"及格"就跳出了,永远不会走到"良好"。规则:从严格到宽松,从上到下排。
七、嵌套 if
if 里面还可以再套 if,实现更细致的判断:
age = 20
has_id = True
if age >= 18:
if has_id:
print("成年且有身份证,可以办理")
else:
print("成年但没带身份证,请先补办")
else:
print("未成年,无法办理")
运行结果:
成年且有身份证,可以办理
嵌套层数不宜过多,一般不超过 3 层,否则代码可读性会很差。多数情况下可以用
and/or组合条件来替代嵌套。
八、条件表达式(三元运算符)
简单的 if-else 可以写成一行,叫条件表达式:
# 常规写法
if score >= 60:
result = "及格"
else:
result = "不及格"
# 条件表达式(一行搞定)
result = "及格" if score >= 60 else "不及格"
两种写法完全等价,条件表达式更简洁,适合简单赋值场景。
第2章综合案例里出现的
{'一致' if age == calculated_age else '不一致'}就是条件表达式,现在你应该能看懂了。
九、Scratch 积木对照
| Scratch | Python | 说明 |
|---|---|---|
| 「如果…那么」积木 | if 条件: |
条件满足时执行 |
| 「如果…那么…否则」积木 | if-else |
条件满足走 if,不满足走 else |
| 多个「如果」嵌套 | if-elif-else |
多条件分支 |
| Scratch 中的条件槽(六边形) | 比较运算符 == / > / < |
填入条件判断 |
scratch积木代码
python代码
# Scratch「如果…那么…否则」积木 → Python
score = 75
if score >= 60:
print("及格")
else:
print("不及格")
Scratch 里拖一个"如果…那么…否则"积木,六边形槽里放比较条件;Python 里写 if-else,条件写在 if 后面。逻辑一模一样,只是从拖积木变成了写代码。
十、综合实战:成绩等级判定程序
把比较运算符、逻辑运算符、if-elif-else、条件表达式全部串起来:
# ========================================
# 成绩等级判定程序
# ========================================
print("=" * 35)
print(" 成绩等级判定系统")
print("=" * 35)
# 接收用户输入
name = input("请输入学生姓名:")
score = float(input("请输入考试成绩(0-100):"))
# 判断成绩是否在合法范围
if score < 0 or score > 100:
print("⚠️ 成绩不在有效范围内(0-100),请重新输入")
else:
# 等级判定
if score >= 90:
grade = "优秀"
elif score >= 80:
grade = "良好"
elif score >= 70:
grade = "中等"
elif score >= 60:
grade = "及格"
else:
grade = "不及格"
# 判断是否需要补考
need_retest = "是" if score < 60 else "否"
# 输出结果
print()
print("-" * 35)
print(f"学生姓名:{name}")
print(f"考试成绩:{score}")
print(f"成绩等级:{grade}")
print(f"是否补考:{need_retest}")
print("-" * 35)
# 鼓励语
if score >= 90:
print("🌟 表现优异,继续保持!")
elif score >= 60:
print("👍 成绩合格,还有提升空间")
else:
print("💪 别灰心,下次加油!")
运行效果:
===================================
成绩等级判定系统
===================================
请输入学生姓名:小明
请输入考试成绩(0-100):85
-----------------------------------
学生姓名:小明
考试成绩:85.0
成绩等级:良好
是否补考:否
-----------------------------------
👍 成绩合格,还有提升空间
分步拆解:
- 输入与类型转换:
float(input(...))一步完成输入和类型转换,因为成绩可能有 85.5 这样的带小数 - 合法性检查:用
or判断成绩是否超出 0-100 范围,超出直接提示,不继续判定 - 等级判定:
if-elif-else从高到低依次判断,命中一个就跳出 - 条件表达式:
need_retest用三元运算符一行赋值,简洁明了 - 鼓励语:独立的
if-elif判断,与等级判定解耦,逻辑清晰
十一、综合实战:简易信息录入小程序(第一部分毕业案例)
这是第一部分(准备篇)的综合案例,综合运用第1-3章所有知识:
# ========================================
# 简易信息录入小程序(第一部分综合案例)
# 综合运用:print + input + 变量 + 数据类型 + 类型转换 + if 条件判断
# ========================================
print("=" * 40)
print(" 欢迎使用简易信息录入系统 v1.0")
print("=" * 40)
# 1. 接收用户基本信息
name = input("请输入你的姓名:")
age = int(input("请输入你的年龄:"))
# 2. 根据年龄判断身份
if age < 0:
print("⚠️ 年龄不能为负数,程序退出")
elif age > 150:
print("⚠️ 年龄超出合理范围,程序退出")
else:
# 3. 判断成年/未成年
if age >= 18:
status = "成年人"
print(f"你好 {name},你已成年,可以继续录入信息。")
else:
status = "未成年人"
print(f"你好 {name},你还未成年,需在家长陪同下继续。")
# 4. 接收更多信息
print()
city = input("请输入你所在的城市:")
hobby = input("请输入你的爱好:")
# 5. 根据年龄段给出不同问候
if age < 12:
greeting = "小朋友"
elif age < 18:
greeting = "同学"
elif age < 60:
greeting = "朋友"
else:
greeting = "前辈"
# 6. 输出信息卡片
print()
print("=" * 40)
print(" 信息录入完成")
print("=" * 40)
print(f" 称呼:{greeting}")
print(f" 姓名:{name}")
print(f" 年龄:{age} 岁({status})")
print(f" 城市:{city}")
print(f" 爱好:{hobby}")
print("=" * 40)
# 7. 额外提示
if age >= 18 and city == "北京":
print("📌 提示:北京成年人可办理一卡通")
elif age < 18:
print("📌 提示:未成年请注意劳逸结合")
else:
print("📌 提示:感谢使用本系统")
运行效果:
========================================
欢迎使用简易信息录入系统 v1.0
========================================
请输入你的姓名:小明
请输入你的年龄:18
你好 小明,你已成年,可以继续录入信息。
请输入你所在的城市:北京
请输入你的爱好:编程
========================================
信息录入完成
========================================
称呼:朋友
姓名:小明
年龄:18 岁(成年人)
城市:北京
爱好:编程
========================================
📌 提示:北京成年人可办理一卡通
分步拆解:
- 基本信息输入:
input+int类型转换,和第2章学的一样 - 异常值拦截:用
if-elif先检查年龄合法性,负数或超150直接退出 - 成年判断:嵌套
if判断成年/未成年,用变量status记录结果 - 年龄段分类:
if-elif-else将年龄映射到不同称呼,体现多分支选择 - 组合条件:
age >= 18 and city == "北京"用and组合两个条件,只有同时满足才触发特定提示 - 变量复用:
status和greeting先赋值再统一输出,体现"先计算、后展示"的编程思路
这个案例涵盖了第1-3章的全部核心知识:环境运行、
input输入、类型转换、比较运算符、逻辑运算符、if-elif-else、嵌套if、条件表达式。能独立写出来,说明第一部分已经掌握了。
十二、常见报错速查表
| 报错信息 | 出现场景 | 原因 | 解决方法 |
|---|---|---|---|
SyntaxError: expected ':' |
if 语句 | if 条件后忘了写冒号 : |
补上冒号:if age >= 18: |
IndentationError: expected an indented block |
if 语句 | if 冒号后没有缩进的代码块 | 至少写一行缩进代码,或写 pass |
SyntaxError: invalid syntax |
if 语句 | 误用 = 代替 == 做比较 |
判断相等用 ==,赋值用 = |
NameError: name 'True' is not defined |
布尔值 | 写成 true 或 TRUE(小写或全大写) |
Python 布尔值首字母大写:True / False |
IndentationError: unindent does not match |
嵌套 if | 缩进层级不一致,混用空格和 Tab | 统一用 4 个空格缩进,不要混用 Tab |
十四、本章小结
本章你掌握了 Python 条件判断的完整体系:
- 比较运算符——
== / != / > / < / >= / <=,比较结果是布尔值True/False - 逻辑运算符——
and(全真才真)、or(有真即真)、not(真假互换),用来组合多个条件 if-elif-else——单分支、双分支、多分支,从上往下匹配,命中即跳出- 嵌套
if——if里面套if,处理更细致的判断,一般不超过 3 层 - 条件表达式——
值A if 条件 else 值B,简单赋值一行搞定
条件判断让程序从"只会顺着走"变成"会做选择",这是编程逻辑的第一次飞跃。
往期回顾:
零基础学 Python 第1章 | 全平台装环境 + VS Code 配置 + 第一个 Hello World
零基础学 Python 第2章 | print 输出 + 变量赋值 + input 交互输入
下一章预告:
程序现在能做判断了,但如果有件事要重复做 100 次呢?总不能写 100 行代码。下一章学习 for 循环 和 range(),让程序学会自动重复,配合 break 和 continue 精确控制循环流程。
文末资源区
| 资源 | 说明 |
|---|---|
Python 官方文档 - if 语句 |
https://docs.python.org/3/tutorial/controlflow.html#if-statements |
| Python 官方文档 - 比较运算 | https://docs.python.org/3/library/stdtypes.html#comparisons |
| Python 官方文档 - 布尔运算 | https://docs.python.org/3/library/stdtypes.html#boolean-operations |
| 本章完整源码 | chapter3_all.py(关注梅雅达编程笔记,订阅领资料) |
每节课都配套课后练习题与完整源码。
代码报错、看不懂知识点,可在评论区粘贴问题,逐一解答!
欢迎关注梅雅达编程笔记,持续分享Python零基础学习内容
更多推荐

所有评论(0)