创建时间: 2026-08-25最后更新: 2026-08-25

1. 条件

程序通常不会无论如何都执行同一组操作。我们可以让它先判断当前情况,再决定下一步做什么:成绩达到及格线就提示通过,否则提示继续努力;用户已经登录就显示个人页面,否则跳转到登录页面。

这种「根据条件选择行为」的能力,就是条件语句。

条件语句的核心问题只有一个:条件成立时执行什么,条件不成立时执行什么。

example.py
1
score = 82
2
3
if score >= 60:
4
print("考试通过")

这段代码中,score >= 60 是条件。它的结果是 True,所以缩进的 print() 会执行。

Python 使用缩进表示代码属于哪个条件分支,不使用大括号包裹代码。通常使用 4 个空格缩进,并且同一个代码块中的缩进必须保持一致。

2. if

最基本的条件语句由 if、条件和冒号组成:

if-basic.py
1
condition = True
2
3
if condition:
4
print("条件成立时执行")

真实代码中的条件可以是比较表达式,也可以是一个已经保存好的布尔变量:

login.py
1
is_logged_in = True
2
3
if is_logged_in:
4
print("欢迎回来")

if 后面的冒号不能省略。下一行开始的缩进代码称为一个代码块,只有条件为真时才会执行。

如果条件为假,Python 会跳过这个代码块,继续执行后面的代码:

empty-branch.py
1
has_message = False
2
3
if has_message:
4
print("显示消息")
5
6
print("程序继续运行")

这个例子最终只会打印 程序继续运行。if 并不会让程序停在原地等待,而是决定代码块是否参与本轮执行。

3. 分支

当条件不成立时需要执行另一段代码,可以使用 else:

else.py
1
age = 16
2
3
if age >= 18:
4
print("可以进入")
5
else:
6
print("暂时不能进入")

else 不需要再写条件。它表示前面的 if 条件没有成立时执行的默认分支。

如果有多个互斥情况,可以使用 elif:

score-level.py
01
score = 82
02
03
if score >= 90:
04
level = "优秀"
05
elif score >= 60:
06
level = "及格"
07
else:
08
level = "需要继续练习"
09
10
print(level)

Python 会从上到下检查这些分支,遇到第一个成立的条件后就执行对应代码,并跳过剩余分支。因此,分支的顺序很重要:更具体的条件应该放在前面,更宽泛的条件放在后面。

elif 可以出现多次,else 最多出现一次,也可以完全省略:

temperature.py
1
temperature = 28
2
3
if temperature < 10:
4
print("天气较冷")
5
elif temperature > 30:
6
print("天气较热")

当温度处于 10 到 30 之间时,这段代码不会打印任何提示。这正是省略 else 后的效果。

4. 真值

条件位置最常见的是 True 或 False,但 Python 允许很多对象直接参与条件判断。

下面这些值通常会被当作假:False、None、数字 0、空字符串,以及空列表、空字典等空容器。其他大多数值会被当作真:

truthy.py
01
name = ""
02
topics = []
03
04
if name:
05
print("已经填写名字")
06
else:
07
print("名字还没有填写")
08
09
if not topics:
10
print("还没有学习主题")

这种写法很适合判断「是否有内容」。如果你的意图是判断一个值是否为 None,应该明确写出 is None,不要把所有假值混在一起:

none-check.py
1
result = None
2
3
if result is None:
4
print("还没有得到结果")

比较运算符可以产生布尔条件。多个条件可以用 and、or 和 not 组合:

运算符含义示例
and两个条件都成立age >= 18 and has_ticket
or至少一个条件成立is_admin or is_owner
not反转条件结果not is_finished
combine.py
1
age = 20
2
has_ticket = True
3
is_banned = False
4
5
can_enter = age >= 18 and has_ticket and not is_banned
6
7
if can_enter:
8
print("允许进入")

Python 还支持连续比较。例如,0 <= score <= 100 表示分数同时大于等于 0 且小于等于 100,适合表达范围判断:

range.py
1
score = 82
2
3
if 0 <= score <= 100:
4
print("分数有效")

5. 嵌套

一个条件分支里面还可以放另一个条件,这叫条件嵌套:

nested.py
01
has_ticket = True
02
age = 16
03
04
if has_ticket:
05
if age >= 18:
06
print("可以进入")
07
else:
08
print("有票,但年龄不满足要求")
09
else:
10
print("请先购买门票")

嵌套能够准确表达判断顺序,但层级太深会让代码难以阅读。两个条件都必须成立时,通常可以用 and 合并:

readable.py
1
has_ticket = True
2
age = 20
3
4
if has_ticket and age >= 18:
5
print("可以进入")

写条件时,可以先把复杂的判断拆成有意义的变量。这样做不会改变程序逻辑,却能让代码更容易检查:

named-condition.py
1
has_ticket = True
2
age = 20
3
4
is_adult = age >= 18
5
can_enter = has_ticket and is_adult
6
7
if can_enter:
8
print("可以进入")

不要为了少写几行,把很多业务规则全部塞进一个超长条件中。条件语句首先要让人读懂,其次才是追求代码短。

6. 实例

下面用一个简单的订单例子,把条件语句串起来。订单满 300 元可以打 9 折,会员但未满 300 元可以打 95 折,其他情况不打折:

order.py
01
amount = 360
02
is_member = True
03
04
if amount >= 300:
05
discount = 0.9
06
elif is_member:
07
discount = 0.95
08
else:
09
discount = 1
10
11
final_amount = amount * discount
12
print(f"应付金额:{final_amount:.2f} 元")

这里的 discount 先由分支决定,再参与后面的计算。把「选择折扣」和「计算金额」分成两步,通常比在一行里直接写完整表达式更清楚。

如果只有一个简单的二选一结果,也可以使用条件表达式:

conditional-expression.py
1
score = 82
2
result = "通过" if score >= 60 else "未通过"
3
4
print(result)

条件表达式适合很短的判断。分支中包含多行代码或多个业务规则时,仍然应该使用普通的 if、elif 和 else。

正在验证登录状态
请稍候,验证完成后将继续显示文章内容