Python 基础知识 之 选择结构(if、elif、else、三元表达式、match)

选择结构(Selection Structure) 是程序设计中最常用的结构之一,用于根据条件决定执行哪一段代码。


🩵 一、选择结构的基本概念

选择结构用于 让程序根据条件做出不同的选择。

Python 提供以下几种常见的选择结构:

类型 说明
单分支结构 只在条件成立时执行某段代码
双分支结构 条件成立执行A,否则执行B
多分支结构 根据多个条件选择不同分支
嵌套结构 在条件中再次判断
三元表达式 简写形式的单行 if-else
match 结构 Python 3.10 新增的模式匹配结构(类似 switch)

🩷 二、单分支结构 if

📘 语法结构

if 条件表达式:
    语句块

⚙️ 执行逻辑

  • 当条件成立(True)时,执行语句块;

  • 当条件不成立(False)时,跳过语句块。

⚠️ 注意事项

  1. 条件表达式后要加 冒号(:);

  2. 缩进 用来决定语句块范围(通常为4个空格)。

💡 示例

# 1. 判断是否中奖
number = eval(input('请输入您的6位中奖号码:'))  # eval将输入的类型(字符型)转化为int类型
if number == 987654:  # 等值判断
    print('中奖了!')

# 2. 判断奇偶数
n = 98  # 赋值操作
if n % 2 == 0:  # %取余操作,98 % 2 的余数为0,0的布尔值为False
    print('n是偶数')
else:
    print('n是奇数')

# 3. 判断一个字符串是否为空字符串
x = input('请输入一个字符串:')
if x:  # 非空字符串的布尔值为True,空字符串的布尔值为False
    print('x是一个非空字符串')
else:
    print('x是一个空字符串')

# 4. 表达式也可以是一个单纯的布尔类型
flag = eval(input('请输入一个布尔值(True或False):'))  # 注意input输入的类型为str
if flag:
    print('flag的值为True')
else:
    print('flag的值为False')

# 5. 精简版if语句
a = 10
b = 8
if a > b: max = a  # 精简写法
print('a和b的最大值为:', max)


🩶 三、双分支结构 if...else

📘 语法结构

if 条件表达式:
    语句块1
else:
    语句块2

💡 示例

# 判断是否中奖
number = eval(input('请输入6位中奖号码:'))
if number == 987654:
    print('恭喜您中奖了!')
else:
    print('很遗憾,您未中奖。')

✨ 精简写法:三元表达式

print('您中奖了' if number == 987654 else '您未中奖')

🩷 四、多分支结构 if...elif...else

📘 语法结构

if 条件1:
    语句块1
elif 条件2:
    语句块2
elif 条件3:
    语句块3
else:
    语句块4

💡 示例:BMI指数判断

tall = float(input('请输入身高(米):'))
weight = float(input('请输入体重(千克):'))
bmi = weight / (tall ** 2)
print(f'BMI = {bmi:.2f}')

if bmi < 18.5:
    print('偏瘦')
elif bmi < 25:
    print('正常')
elif bmi < 28:
    print('超重')
elif bmi < 32:
    print('肥胖')
else:
    print('严重肥胖')

🩵 五、嵌套 if 结构

📘 概念

在一个 if 或 else 语句块中嵌入另一个 if 结构。

💡 示例:判断是否酒驾

answer = input("请问您喝酒了吗?(y/n):")
if answer.lower() == "y":
    proof = eval(input('请输入酒精含量(mg/100ml):'))
    if proof < 20:
        print('未达到酒驾标准')
    elif proof < 80:
        print('酒驾,请勿驾驶')
    else:
        print('醉驾,非常危险!')
else:
    print('您可以安全驾驶')

🩷 六、多个条件连接(and / or)

🧩 逻辑运算符

运算符 含义 示例 结果
and 同时为真才为真 x > 0 and y > 0 两个条件都成立
or 只要一个为真 x == 0 or y == 0 其中之一成立

💡 示例:登录系统

user = input('用户名:')
pwd = input('密码:')
if user == 'admin' and pwd == '123456':
    print('登录成功')
else:
    print('用户名或密码错误')

💚 七、if 三元表达式(条件表达式)

📘 语法结构

值1 if 条件表达式 else 值2

如果条件成立,返回值1,否则返回值2。

💡 示例

a, b = 10, 20
max_value = a if a > b else b
print(max_value)  # 输出20

🧩 嵌套三元表达式(多条件判断)

基本结构

result = A if cond1 else B if cond2 else C

等价于:

if cond1:
    result = A
elif cond2:
    result = B
else:
    result = C

示例:根据分数判断等级

score = 75
level = (
    "优秀" if score >= 90
    else "良好" if score >= 80
    else "及格" if score >= 60
    else "不及格"
)
print(level)

📖 等价于:

if score >= 90:
    level = "优秀"
elif score >= 80:
    level = "良好"
elif score >= 60:
    level = "及格"
else:
    level = "不及格"

✅ 三元表达式的使用建议

场景 推荐 说明
简单条件判断 ✅ 提高代码简洁度
多层嵌套判断 🚫 可读性差,建议用 if-elif
可枚举状态 ✅ 建议用字典映射代替嵌套

💡 字典映射替代写法

level_dict = {
    90: "优秀",
    80: "良好",
    60: "及格"
}
level = level_dict.get(score, "不及格")

✅总结速查表

需求 写法 示例
单条件 A if cond else B x = 1 if flag else 0
双条件 A if c1 else B if c2 else C "高" if s>90 else "中" if s>60 else "低"
多层条件(推荐写法) 使用括号增强可读性 ("A" if c1 else ("B" if c2 else "C"))
可扩展条件 使用字典映射 status_map.get(code, "未知")

💙 八、match 模式匹配结构(Python 3.10+)

📘 语法结构

match 变量:
    case 值1:
        执行语句1
    case 值2:
        执行语句2
    case _:
        默认执行语句

💡 示例

# 1. 判断年龄
age = eval(input('请输入您的年龄:'))
match age:
    case x if x < 10:
        print(f'< 10岁:{x},您是儿童')
    case 10:
        print('10岁,您是少年')
    case 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18:
        print('11~18岁,您是青少年')
    case _:
        print(f'{age}岁,您是成年人')

# 2. 判断成绩等级
score = input('请输入您的成绩等级:')
match score:
    case 'A' | 'a':
        print('优秀')
    case 'B' | 'b':
        print('良好')
    case 'C' | 'c':
        print('及格')
    case 'D' | 'd':
        print('差')
    case _:
        print('输入的成绩等级无效')

🩶 九、选择结构逻辑总览(思维导图)

选择结构
 ├── 单分支 if
 ├── 双分支 if...else
 ├── 多分支 if...elif...else
 ├── 嵌套 if
 ├── 多条件连接 and/or
 ├── 三元表达式
 └── match 模式匹配

🧩 十、总结对比表

结构类型 语法简洁度 可读性 典型场景 Python版本
if 简单 高 单条件判断 所有版本
if...else 中等 高 两种结果 所有版本
if...elif...else 中等 高 多分支判断 所有版本
嵌套 if 一般 中等 多层逻辑判断 所有版本
三元表达式 高 中等 一行条件赋值 所有版本
match 高 高 枚举匹配 Python 3.10+

🏁 十一、一句话总结

选择结构 = 程序的“决策机制”
它让程序能像人一样,根据条件选择不同的执行路径。

✨ if 决定逻辑
✨ elif 增加分支
✨ else 兜底处理
✨ match 简化枚举
✨ 三元表达式让代码更优雅


posted @ 2025-01-12 19:15  kyle_7Qc  阅读(1407)  评论(0)    收藏  举报