python中if怎么嵌套if

嵌套 if 指在 if/elif/else 内部再写 if,用于分层判断;需注意缩进和 else 的就近匹配原则;互斥条件优先用 elif 保持扁平易读。

Python 中的 if 可以直接在另一个 ifelifelse 的代码块里再写一个 if,这就是嵌套 if。关键不是“能不能”,而是“要不要”——只要逻辑需要分层判断,嵌套就很自然。

嵌套 if 的基本写法

外层 if 判断成立后,才执行内层 if。缩进必须正确(通常 4 个空格),否则会报错或逻辑出错。

例如:判断一个数是否为正数,且是否为偶数:

x = 8
if x > 0:
    if x % 2 == 0:
        print("是正偶数")
    else:
        print("是正奇数")
else:
    print("不是正数")

用 elif 替代部分嵌套,让代码更扁平

如果多个条件互斥(比如成绩分级),用 elif 比层层嵌套更清晰、易读、少缩进。

  • ✅ 推荐(扁平):if ... elif ... elif ... else
  • ❌ 不必要嵌套:if: if: ... else: if: ...(容易绕晕)

比如判断分数等级:

score = 85
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
else:
    grade = "F"

嵌套时注意逻辑边界和 else 的归属

每个 else 默认属于**最近的、未配对的 if**。嵌套深了容易看错谁管谁。

例如:

if a > 0:
    if b > 0:
        print("a 和 b 都大于 0")
    else:
        print("a > 0 但 b <= 0")  # 这个 else 属于 inner if
else:
    print("a <= 0")  # 这个 else 属于 outer if

如果想表达“只要 aand/or 逻辑组合。

实际中怎么选:嵌套 or 扁平?

看判断维度是否真正“分层”:

  • 用户登录 → 登录成功 → 再判断权限级别 → 再判断能否删数据 → ✅ 适合嵌套
  • 输入月份 → 输出季节 → ❌ 不适合嵌套,用 if-elif 更直白
  • 想提前退出复杂判断?考虑把嵌套逻辑拆成函数,提高可读性

基本上就这些。嵌套本身不难,难的是让别人(和未来的你)一眼看懂逻辑路径。