条件判断
刚学编程的朋友,最开始应该会好奇:程序难道只会从上往下一条路走到黑吗?比如能不能让它根据输入不同的密码,决定是否放行?根据年龄不同,给不同的电影分级提示?这时候就轮到控制流的核心——条件判断登场了。
Python 的条件判断语法非常友好,没有多余的大括号(用缩进代替),完全贴合自然语言的逻辑,今天我们就来从入门到进阶,吃透它!
1. 最基础的单分支:if 语句
当你只需要“满足某个条件才做特定事”时,用单分支的 if 就够了。
语法结构
Python 的语法规则很简单:
小试牛刀的例子
比如你想给满18岁的人发成年礼通知:
这里的 age >= 18 是一个布尔表达式,只会返回 True 或 False。如果是 True,就缩进下面的两行代码;如果是 False,这两行直接跳过,程序继续往下走。
2. 满足做A,不满足做B:if-else 双分支
单分支只能处理“做/不做”,但很多时候需要“二选一的必做分支”——比如年龄够了去买成人票,不够去买儿童票,这时候加个 else 就行。
语法结构
实用例子
我们把成年礼的例子稍微改改,变成票房查询场景:
3. 三选一、四选一?用 if-elif-else 多分支
如果有超过两个连续且互斥的条件(比如电影分级0-3岁免票、4-12岁半票、13-64岁全票、65+免票),就不要写嵌套的 if-else 了(嵌套多了可读性很差),直接用 Python 专属的 elif(else if 的缩写)。
语法结构
注意执行顺序!
这是很多新手会踩的坑:Python 是从上到下依次匹配条件的,一旦匹配到第一个真的,剩下的 elif 和 else 直接全部跳过!
比如下面这个错误的电影分级代码:
如果把 age >= 13 放到最前面,那 25岁 的人会直接匹配到第一个条件,输出全票,没问题;但如果顺序乱了,比如先写 age >= 4,那 25岁 也会匹配到半票!
4. 不用写全 == True/!= 0?Python 的“真值/假值”简化
Python 有个非常贴心的设计:不是只有 True 和 False 才能当条件!很多值会被自动“视为假”,其他的都“视为真”,可以直接用来简化代码。
自动视为 False 的值列表
记不住没关系,核心记住几个常用的就行:
- 显式的假:
None、False - 数值的假:整数
0、浮点数0.0、复数0j - 空序列的假:空字符串
''、空列表[]、空元组()、空集合set() - 空映射的假:空字典
{}
简化前后的对比
比如检查用户是否输入了有效内容:
再比如检查变量是否是0:
5. 处理用户输入要小心!别忘了类型转换和异常捕获
我们经常用 input() 函数获取用户输入,但input() 返回的永远是字符串!如果要用来做数值比较(比如年龄、BMI的体重身高),必须先转成 int 或 float。
直接转的话,如果用户输入的不是数字(比如“abc”),程序会直接报错退出——这太不友好了!所以还要加个 try-except 捕获异常。
安全又完整的输入处理例子
比如判断用户是00前还是00后:
6. 结合小案例练手:BMI 计算器
BMI(身体质量指数)是衡量体重是否健康的常用指标,刚好适合用多分支条件判断。
完整代码
7. 现代 Python 的进阶写法(3.6+ 支持)
如果你的 Python 版本比较新(建议至少3.8,现在最新稳定版都3.13了),可以用这些高级特性让代码更简洁、更Pythonic:
7.1 类型注解(3.6+)
虽然 Python 是动态类型语言,但加上类型注解能让代码更易读,也方便编辑器和静态检查工具(比如 mypy)帮你找 bug。
7.2 海象运算符 :=(3.8+)
海象运算符可以在条件判断里同时完成“赋值+判断”,减少重复代码。 比如刚才的00前00后判断,简化成这样:
这里的 (birth_year := int(...)) 既把输入转成整数赋值给了 birth_year,又直接把这个值作为判断条件,一举两得!
7.3 模式匹配 match-case(3.10+)
模式匹配是 Python 3.10 引入的重磅特性,虽然基础场景下和 if-elif-else 差不多,但处理复杂结构(比如列表、字典、类实例)时会非常好用。不过先看个基础年龄判断的例子对比一下:
这里的 _ 是通配符,相当于 else 的兜底逻辑。
8. 新手必踩的5个常见错误
8.1 忘记加冒号 :
if、elif、else 后面必须加冒号,这是 Python 语法的硬性要求!
8.2 缩进错误
Python 用缩进表示代码块的归属,缩进不一致(比如有的用2个空格,有的用4个)或者不该缩进的地方缩进了,都会报错!
8.3 混淆赋值 = 和相等判断 ==
这是所有新手都会犯的低级错误!= 是把右边的值赋给左边的变量,== 是判断左右两边是否相等。
8.4 未处理用户输入的类型转换
刚才讲过,input() 返回的是字符串,不能直接用来做数值比较,否则会报错!
8.5 条件判断顺序错误
刚才的多分支部分重点讲过,一定要把范围更小、更严格的条件放在前面,范围大的放在后面!
总结
Python 的条件判断是控制程序流程的核心,从入门到进阶我们梳理了:
- 基础的单分支
if、双分支if-else、多分支if-elif-else - 利用“真值/假值”简化代码
- 安全处理用户输入
- 结合 BMI 计算器的小案例
- 现代 Python 的类型注解、海象运算符、模式匹配
- 新手必踩的5个坑
通过合理使用这些语法,你已经能写出有“选择能力”的程序啦!下一篇我们会讲循环,让程序有“重复执行能力”~

