Python流程控制:if-else与if-elif-else嵌套使用

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. 常见陷阱与最佳实践

陷阱

  1. 忘记冒号 : —— 最常见的语法错误
  2. 混用 ===
   if age = 18:   # 错误!这是赋值
   if age == 18:  # 正确
  1. 浮点数比较
   if abs(x - 3.14) < 0.0001:  # 推荐
  1. 嵌套过深导致代码难以阅读

最佳实践

  • 条件尽量写得清晰易懂
  • 优先使用扁平结构(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))

练习题(建议立即动手):

  1. 写一个根据 BMI 值判断体重的程序(偏瘦、正常、超重、肥胖)
  2. 模拟一个成绩分级系统(支持输入多科成绩取平均值)
  3. 写一个判断闰年的函数(能被4整除但不能被100整除,或能被400整除)

下一节预告(你可以直接告诉我想要哪一篇):

  • 循环控制:forwhilebreak/continue/else
  • 列表推导式与生成器表达式
  • match-case 模式匹配深度解析(Python 3.10+)
  • 异常处理 try-except

需要我详细讲解上面哪个知识点,或者给你练习题答案和解析吗?随时说!

文章已创建 5321

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部