❓ 11. 条件判断 if/elif/else

本章概述

学习 Python 的条件判断语句,让程序根据条件执行不同的代码。 预计学习时间:40 分钟


11.1 if 语句

基本格式

if 条件:
    条件成立时执行的代码

注意

  • 条件后面要有冒号 :
  • 缩进的代码块是条件成立时执行的
  • 缩进用 4 个空格(官方推荐)

示例

age = 20
 
if age >= 18:
    print("你是成年人")
    print("可以独立做决定")
 
print("程序结束")  # 这行不在if里,总是执行

条件可以是什么?

任何能转成布尔值的表达式都可以当条件:

# 比较表达式
if age >= 18:
    ...
 
# 逻辑表达式
if age >= 18 and score >= 60:
    ...
 
# 直接用值(空值、0、空序列等都是False)
if name:  # name非空字符串
    ...
 
if lst:   # 列表非空
    ...

Python 风格

不要写 if x == True:if len(lst) > 0: 直接写 if x:if lst: 更 Pythonic


11.2 if-else 语句

条件成立执行 if 块,不成立执行 else 块。

基本格式

if 条件:
    条件成立时执行
else:
    条件不成立时执行

示例

age = 16
 
if age >= 18:
    print("成年人")
else:
    print("未成年人")

11.3 if-elif-else 语句

多个条件判断,按顺序检查,第一个成立的执行。

基本格式

if 条件1:
    条件1成立时执行
elif 条件2:
    条件2成立时执行
elif 条件3:
    条件3成立时执行
else:
    都不成立时执行

说明

  • elif 可以有多个
  • else 是可选的
  • 只会执行第一个成立的分支

示例

score = 85
 
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

注意顺序

条件判断是从上到下的,顺序很重要!

# ❌ 错误:永远不会执行"优秀"分支
if score >= 60:
    print("及格")
elif score >= 80:
    print("良好")
elif score >= 90:
    print("优秀")
 
# ✅ 正确:从高到低判断
if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")

11.4 嵌套 if

if 里面还可以再写 if:

age = 25
money = 100
 
if age >= 18:
    print("成年人")
    if money >= 50:
        print("可以买东西")
    else:
        print("钱不够")
else:
    print("未成年人")

嵌套不要太深

嵌套层级太多会让代码难以阅读,尽量控制在 3 层以内。


11.5 三元表达式(条件表达式)

Python 特色

简单的 if-else 可以用一行写完。

格式

值1 if 条件 else 值2

条件成立返回值1,不成立返回值2。

示例

age = 20
 
# 普通写法
if age >= 18:
    status = "成年"
else:
    status = "未成年"
 
# 三元表达式(一行搞定)
status = "成年" if age >= 18 else "未成年"

更多示例

# 求绝对值
x = -5
abs_x = x if x >= 0 else -x
 
# 取最大值
a, b = 10, 20
max_val = a if a > b else b
 
# 判断奇偶
num = 7
result = "奇数" if num % 2 else "偶数"

什么时候用三元表达式?

  • 简单的二选一赋值
  • 代码更简洁
  • 太复杂的逻辑还是用普通 if-else,可读性更好

11.6 match-case 模式匹配(Python 3.10+)

Python 3.10 新增了 match-case 语句,类似其他语言的 switch-case

基本格式

match 变量:
    case 值1:
        匹配值1时执行
    case 值2:
        匹配值2时执行
    case _:
        都不匹配时执行(默认)

示例

day = 3
 
match day:
    case 1:
        print("星期一")
    case 2:
        print("星期二")
    case 3:
        print("星期三")
    case 4 | 5:
        print("星期四或星期五")
    case _:
        print("周末")

说明

  • Python 3.10+ 才支持
  • 功能比 switch-case 强大得多,支持各种模式匹配
  • 初学者了解即可,实际用 if-elif-else 也完全可以

11.7 常见应用场景

1. 判断成绩等级

score = float(input("请输入成绩:"))
 
if score > 100 or score < 0:
    print("成绩无效")
elif score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
elif score >= 60:
    print("D")
else:
    print("F")

2. 判断闰年

year = int(input("请输入年份:"))
 
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("闰年")
else:
    print("平年")

3. 判断三角形

a, b, c = 3, 4, 5
 
if a + b > c and a + c > b and b + c > a:
    print("能构成三角形")
    if a == b == c:
        print("等边三角形")
    elif a == b or b == c or a == c:
        print("等腰三角形")
    elif a**2 + b**2 == c**2:
        print("直角三角形")
else:
    print("不能构成三角形")

🔗 相关章节


📝 我的笔记

在这里记录你的理解、疑问和练习代码

# 你的练习代码
 

✅ 本章检查清单

  • 掌握 if 语句的基本用法
  • 掌握 if-else 语句
  • 掌握 if-elif-else 多分支
  • 理解嵌套 if
  • 会使用三元表达式
  • 了解 match-case 模式匹配