Python 流程控制:if-else 与 if-elif-else 嵌套使用完全指南
流程控制是编程中最基础、最重要的部分。在 Python 中,if 语句用于根据条件决定程序的执行路径。
1. 基础语法
① if 单独使用
age = 18
if age >= 18:
print("你已经成年")
② if-else(二选一)
age = 16
if age >= 18:
print("成年")
else:
print("未成年")
③ if-elif-else(多分支,最常用)
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
注意:
elif可以有多个,按顺序判断,只要有一个条件成立就执行对应代码块,后面的不再执行。else是可选的。
2. 嵌套 if(if 里面再写 if)
当判断条件有层次关系时,需要使用嵌套。
示例1:嵌套基本用法
age = 20
has_id_card = True
if age >= 18:
print("你已成年")
if has_id_card:
print("可以独自旅行")
else:
print("需要监护人陪同")
else:
print("未成年,不能独自旅行")
示例2:多层嵌套(判断考试成绩)
score = 92
is_cheat = False
if score >= 90:
if is_cheat:
print("成绩无效(作弊)")
else:
if score == 100:
print("满分!奖励")
else:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")
嵌套层级建议:不超过 3 层,超过 3 层时应考虑重构代码。
3. 代码重构技巧(避免深层嵌套)
技巧1:使用 and / or 扁平化
# 嵌套写法(不推荐)
if age >= 18:
if has_id_card:
print("允许进入")
# 推荐扁平化
if age >= 18 and has_id_card:
print("允许进入")
技巧2:提前返回(Guard Clause 守卫子句)
def can_travel(age, has_id_card):
if age < 18:
return "未成年,不能旅行"
if not has_id_card:
return "需要身份证"
return "可以旅行"
技巧3:使用字典映射(多分支场景)
def get_level(score):
if score >= 90: return "A"
if score >= 80: return "B"
if score >= 60: return "C"
return "D"
# 更优雅的写法(Python 3.10+ 推荐 match-case)
def get_level_match(score):
match score:
case s if s >= 90: return "A"
case s if s >= 80: return "B"
case s if s >= 60: return "C"
case _: return "D"
4. 条件表达式(三元运算符)
一行实现简单的 if-else:
age = 20
status = "成年" if age >= 18 else "未成年"
print(status)
# 嵌套三元(不推荐过度使用)
level = "优秀" if score >= 90 else "良好" if score >= 80 else "及格"
5. 常见陷阱与最佳实践
陷阱:
- 忘记冒号
:—— 最常见的语法错误 - 混用
=和==:
if age = 18: # 错误!这是赋值
if age == 18: # 正确
- 浮点数比较:
if abs(x - 3.14) < 0.0001: # 推荐
- 嵌套过深导致代码难以阅读
最佳实践:
- 条件尽量写得清晰易懂
- 优先使用扁平结构(and/or + 提前返回)
- 复杂逻辑抽成函数
- 多分支考虑使用字典或
match-case - 保持同一级代码块缩进一致(推荐使用 4 个空格)
6. 综合实战案例
def login_system(username, password, is_admin=False):
if not username or not password:
return "用户名或密码不能为空"
if username == "admin" and password == "123456":
if is_admin:
return "超级管理员登录成功"
else:
return "管理员登录成功"
elif username and password:
return "普通用户登录成功"
else:
return "登录失败"
print(login_system("admin", "123456", True))
练习题(建议立即动手):
- 写一个根据 BMI 值判断体重的程序(偏瘦、正常、超重、肥胖)
- 模拟一个成绩分级系统(支持输入多科成绩取平均值)
- 写一个判断闰年的函数(能被4整除但不能被100整除,或能被400整除)
下一节预告(你可以直接告诉我想要哪一篇):
- 循环控制:
for、while与break/continue/else - 列表推导式与生成器表达式
match-case模式匹配深度解析(Python 3.10+)- 异常处理
try-except
需要我详细讲解上面哪个知识点,或者给你练习题答案和解析吗?随时说!