第23课:多选一迷宫——if-elif-else多分支

🎯 本课目标

  • 掌握if-elif-else多分支语句的语法
  • 理解多条件判断的执行顺序
  • 学会处理三个及以上选择的情况
  • 能够编写高效的多分支程序
  • 培养多角度思考问题的能力

🤔 趣味引入:生活中的"多选一"

想象一下:生活中充满"多选一"的选择:

  • 🍽️ 如果想吃面,就去面馆如果想吃饭,就去饭店否则回家自己做
  • 🎮 如果考100分,买游戏机如果考90分以上,买玩具否则继续努力
  • 🌤️ 如果晴天,去公园如果雨天,去看电影如果阴天,去图书馆否则在家休息

今天,让我们一起学习编程中的"多选一"——if-elif-else语句


🔧 第一部分:认识if-elif-else语句

1.1 什么是多分支语句?

# if-elif-else语句基本概念
print("🎯 认识if-elif-else语句")
print("=" * 50)

print("""
if-elif-else语句就像生活中的"多选一"
格式:
    if 条件1:
        条件1为True时做的事情
    elif 条件2:
        条件2为True时做的事情
    elif 条件3:
        条件3为True时做的事情
    else:
        所有条件都不满足时做的事情

特点:
    1. 从上到下依次检查条件
    2. 找到一个满足的条件就停止
    3. 最多执行一个分支
    4. else是可选的(可以没有)
""")

# 简单示例
print("\n📝 简单示例:根据分数给评语")
score = 85
print(f"分数:{score}")

if score >= 90:
    print("🏆 优秀!太棒了!")
elif score >= 80:
    print("🎯 良好!继续加油!")
elif score >= 70:
    print("💪 中等!还有进步空间!")
elif score >= 60:
    print("📈 及格!需要更努力!")
else:
    print("📚 不及格!要加油了!")

1.2 if-elif-else的执行流程

# 执行流程演示
print("\n🔄 if-elif-else执行流程")
print("=" * 50)

print("""
流程图解:

         ┌──────────────┐
         │   开始执行    │
         └──────┬───────┘
                ▼
         ┌──────────────┐
         │  检查条件1   │────True──→ 执行代码块1
         └──────┬───────┘               │
              False                     │
                ▼                       │
         ┌──────────────┐               │
         │  检查条件2   │────True──→ 执行代码块2
         └──────┬───────┘               │
              False                     │
                ▼                       │
         ┌──────────────┐               │
         │  检查条件3   │────True──→ 执行代码块3
         └──────┬───────┘               │
              False                     │
                ▼                       │
         ┌──────────────┐               │
         │  执行else    │──────────────→│
         └──────────────┘               │
                ▼                       ▼
         ┌──────────────────────────────┐
         │        继续执行后续代码       │
         └──────────────────────────────┘
""")

# 演示:找到第一个满足的条件就停止
print("🎬 执行演示:")
number = 15
print(f"数字:{number}")

if number < 10:
    print(f"{number} < 10:在第一个分支")
elif number < 20:
    print(f"{number} < 20:在第二个分支(执行这个)")
elif number < 30:
    print(f"{number} < 30:在第三个分支(不会执行)")
else:
    print("在其他分支(不会执行)")

print("✅ 程序继续执行...")

🔄 第二部分:多分支语法详解

2.1 基本语法结构

# 多分支语法详解
print("📚 多分支语法详解")
print("=" * 50)

print("""
📋 完整语法格式:

if 条件1:
    # 条件1为True时执行
    代码块1
elif 条件2:
    # 条件1为False且条件2为True时执行
    代码块2
elif 条件3:
    # 条件1、2都为False且条件3为True时执行
    代码块3
else:
    # 所有条件都为False时执行
    代码块4

💡 重要规则:
1. 只有一个elif或多个elif都可以
2. else是可选的,可以省略
3. 条件按顺序检查,找到就停止
4. 最多执行一个代码块
""")

# 示例:不同数量的elif
print("\n📝 示例1:只有一个elif")
weather = "阴"
if weather == "晴":
    print("☀️ 去公园")
elif weather == "雨":
    print("🌧️ 在家看书")
else:
    print("🏠 做其他事")

print("\n📝 示例2:多个elif")
fruit = "橙子"
if fruit == "苹果":
    print("🍎 苹果好吃")
elif fruit == "香蕉":
    print("🍌 香蕉营养")
elif fruit == "橙子":
    print("🍊 橙子维生素C多")
elif fruit == "葡萄":
    print("🍇 葡萄甜")
else:
    print("🥝 其他水果也不错")

print("\n📝 示例3:没有else(只有if-elif)")
day = "周三"
if day == "周六":
    print("🎉 周末啦!")
elif day == "周日":
    print("😊 明天要上学了")
# 没有else,其他情况什么都不做

2.2 条件顺序的重要性

# 条件顺序的重要性
print("\n🎯 条件顺序的重要性")
print("=" * 50)

print("""
⚠️ 条件顺序很重要!
    1. 先判断范围小的条件
    2. 再判断范围大的条件
    3. 否则可能会出现问题
""")

# 错误示范:范围大的条件在前面
print("❌ 错误示范:范围大的条件在前")
score = 85
print(f"分数:{score}")

if score >= 60:  # 这个条件先成立
    print("及格了")  # 会执行这个
elif score >= 90:
    print("优秀")  # 永远不会执行到这里!
else:
    print("不及格")

print("问题:即使考了85分,也只会显示'及格了'\n")

# 正确示范:范围小的条件在前面
print("✅ 正确示范:范围小的条件在前")
score = 85
print(f"分数:{score}")

if score >= 90:  # 先判断最高分
    print("🏆 优秀")
elif score >= 80:  # 再判断较高分
    print("🎯 良好")  # 会执行这个
elif score >= 70:
    print("💪 中等")
elif score >= 60:
    print("📈 及格")
else:
    print("📚 不及格")

print("正确:85分显示'良好'")

🎮 第三部分:多分支实践

3.1 交互式多选一

# 交互式多选一练习
print("🎮 交互式多选一练习")
print("=" * 50)

# 练习1:星期判断
print("练习1:星期活动推荐")
day = input("今天是星期几?(输入数字1-7):")

if day == "1":
    print("📚 周一:好好学习,新开始!")
elif day == "2":
    print("📖 周二:继续加油!")
elif day == "3":
    print("🏃 周三:适合运动的日子")
elif day == "4":
    print("🎵 周四:听听音乐放松")
elif day == "5":
    print("🎉 周五:马上周末了!")
elif day == "6":
    print("🎮 周六:尽情玩耍!")
elif day == "7":
    print("📝 周日:整理书包,准备明天")
else:
    print("❌ 请输入1-7的数字!")

# 练习2:饮料选择
print("\n练习2:自动售货机")
print("可选饮料:1.可乐 2.雪碧 3.果汁 4.矿泉水")
drink = input("请输入饮料编号(1-4):")

if drink == "1":
    print("🥤 可乐:3元,碳酸饮料")
elif drink == "2":
    print("🥤 雪碧:3元,柠檬味汽水")
elif drink == "3":
    print("🧃 果汁:5元,鲜榨果汁")
elif drink == "4":
    print("💧 矿泉水:2元,纯净水")
else:
    print("❌ 没有这个编号的饮料")

# 练习3:成绩评语
print("\n练习3:智能评语系统")
score = float(input("请输入考试成绩(0-100):"))

if score == 100:
    print("🏆 满分!天才!")
elif score >= 95:
    print("⭐ 非常优秀!接近满分!")
elif score >= 90:
    print("🌟 优秀!继续保持!")
elif score >= 80:
    print("👍 良好!不错的表现!")
elif score >= 70:
    print("💪 中等!还有进步空间!")
elif score >= 60:
    print("📈 及格!需要更努力!")
elif score >= 0:
    print("📚 不及格!要加油了!")
else:
    print("❌ 请输入0-100之间的分数!")

3.2 迷宫导航系统

# 迷宫导航系统
print("\n🧭 迷宫导航系统")
print("=" * 50)

print("欢迎来到迷宫!")
print("你站在一个十字路口。")
print("请选择方向:")
print("1. 向北走(通往森林)")
print("2. 向南走(通往村庄)")
print("3. 向东走(通往河流)")
print("4. 向西走(通往山脉)")

direction = input("\n请输入选择(1-4):")

if direction == "1":
    print("\n🌲 你走进了森林...")
    print("森林里有三条小路:")
    print("A. 左边的小路(可能有蘑菇)")
    print("B. 中间的小路(可能有动物)")
    print("C. 右边的小路(可能有宝藏)")
    
    path = input("选择小路(A/B/C):")
    if path.upper() == "A":
        print("🍄 你找到了很多蘑菇!")
    elif path.upper() == "B":
        print("🦊 你遇到了一只小狐狸!")
    elif path.upper() == "C":
        print("💎 你发现了一个宝箱!")
    else:
        print("❌ 迷路了...")

elif direction == "2":
    print("\n🏘️ 你来到了村庄...")
    print("村里有几家店铺:")
    print("A. 面包店(香喷喷的面包)")
    print("B. 铁匠铺(闪闪发光的武器)")
    print("C. 药店(神奇的药水)")
    
    shop = input("去哪家店(A/B/C):")
    if shop.upper() == "A":
        print("🥖 买了新鲜面包,体力恢复!")
    elif shop.upper() == "B":
        print("⚔️ 打造了一把新剑!")
    elif shop.upper() == "C":
        print("🧪 买了一瓶治疗药水!")
    else:
        print("❌ 没有这家店...")

elif direction == "3":
    print("\n🌊 你来到了河边...")
    print("你可以:")
    print("A. 钓鱼(需要耐心)")
    print("B. 游泳(需要勇气)")
    print("C. 搭桥过河(需要材料)")
    
    river_action = input("选择行动(A/B/C):")
    if river_action.upper() == "A":
        print("🐟 钓到了一条大鱼!")
    elif river_action.upper() == "B":
        print("🏊 游到了对岸!")
    elif river_action.upper() == "C":
        print("🌉 成功搭桥过河!")
    else:
        print("❌ 不知道做什么...")

elif direction == "4":
    print("\n⛰️ 你来到了山脉...")
    print("山上有什么:")
    print("A. 山洞(可能住着熊)")
    print("B. 山顶(可以看到整个迷宫)")
    print("C. 矿洞(可能有宝石)")
    
    mountain_action = input("去哪里(A/B/C):")
    if mountain_action.upper() == "A":
        print("🐻 山洞里有一只小熊!")
    elif mountain_action.upper() == "B":
        print("🏔️ 山顶的风景太美了!")
    elif mountain_action.upper() == "C":
        print("💎 发现了一颗红宝石!")
    else:
        print("❌ 找不到路...")

else:
    print("❌ 无效的方向!")

📊 第四部分:复杂多分支应用

4.1 智能餐厅点餐系统

# 智能餐厅点餐系统
print("\n🍽️ 智能餐厅点餐系统")
print("=" * 50)

print("欢迎来到智能餐厅!")
print("请选择菜品类别:")
print("1. 🥩 主食类")
print("2. 🥗 蔬菜类")
print("3. 🍲 汤品类")
print("4. 🍨 甜品类")
print("5. 🥤 饮品类")

category = input("\n请输入选择(1-5):")

if category == "1":
    print("\n🥩 主食类菜单:")
    print("A. 红烧牛肉面 - 28元")
    print("B. 蛋炒饭 - 18元")
    print("C. 饺子 - 22元")
    print("D. 三明治 - 15元")
    
    food = input("请选择(A/B/C/D):")
    if food.upper() == "A":
        print("✅ 已下单:红烧牛肉面,28元")
    elif food.upper() == "B":
        print("✅ 已下单:蛋炒饭,18元")
    elif food.upper() == "C":
        print("✅ 已下单:饺子,22元")
    elif food.upper() == "D":
        print("✅ 已下单:三明治,15元")
    else:
        print("❌ 没有这道菜")

elif category == "2":
    print("\n🥗 蔬菜类菜单:")
    print("A. 清炒小白菜 - 12元")
    print("B. 西红柿炒蛋 - 15元")
    print("C. 凉拌黄瓜 - 10元")
    print("D. 蒜蓉西兰花 - 18元")
    
    food = input("请选择(A/B/C/D):")
    if food.upper() == "A":
        print("✅ 已下单:清炒小白菜,12元")
    elif food.upper() == "B":
        print("✅ 已下单:西红柿炒蛋,15元")
    elif food.upper() == "C":
        print("✅ 已下单:凉拌黄瓜,10元")
    elif food.upper() == "D":
        print("✅ 已下单:蒜蓉西兰花,18元")
    else:
        print("❌ 没有这道菜")

elif category == "3":
    print("\n🍲 汤品类菜单:")
    print("A. 紫菜蛋花汤 - 8元")
    print("B. 番茄牛腩汤 - 25元")
    print("C. 玉米排骨汤 - 22元")
    print("D. 酸辣汤 - 10元")
    
    food = input("请选择(A/B/C/D):")
    if food.upper() == "A":
        print("✅ 已下单:紫菜蛋花汤,8元")
    elif food.upper() == "B":
        print("✅ 已下单:番茄牛腩汤,25元")
    elif food.upper() == "C":
        print("✅ 已下单:玉米排骨汤,22元")
    elif food.upper() == "D":
        print("✅ 已下单:酸辣汤,10元")
    else:
        print("❌ 没有这道汤")

elif category == "4":
    print("\n🍨 甜品类菜单:")
    print("A. 芒果布丁 - 12元")
    print("B. 巧克力蛋糕 - 18元")
    print("C. 冰淇淋 - 8元")
    print("D. 水果拼盘 - 15元")
    
    food = input("请选择(A/B/C/D):")
    if food.upper() == "A":
        print("✅ 已下单:芒果布丁,12元")
    elif food.upper() == "B":
        print("✅ 已下单:巧克力蛋糕,18元")
    elif food.upper() == "C":
        print("✅ 已下单:冰淇淋,8元")
    elif food.upper() == "D":
        print("✅ 已下单:水果拼盘,15元")
    else:
        print("❌ 没有这道甜品")

elif category == "5":
    print("\n🥤 饮品类菜单:")
    print("A. 可乐 - 5元")
    print("B. 橙汁 - 8元")
    print("C. 奶茶 - 12元")
    print("D. 矿泉水 - 3元")
    
    food = input("请选择(A/B/C/D):")
    if food.upper() == "A":
        print("✅ 已下单:可乐,5元")
    elif food.upper() == "B":
        print("✅ 已下单:橙汁,8元")
    elif food.upper() == "C":
        print("✅ 已下单:奶茶,12元")
    elif food.upper() == "D":
        print("✅ 已下单:矿泉水,3元")
    else:
        print("❌ 没有这种饮料")

else:
    print("❌ 没有这个类别!")

4.2 智能交通信号灯

# 智能交通信号灯
print("\n🚦 智能交通信号灯")
print("=" * 50)

print("欢迎使用智能交通信号灯系统!")
print("请输入当前信号灯状态:")

light = input("信号灯颜色(红/黄/绿):")

if light == "红":
    print("\n🛑 红灯亮起")
    print("车辆必须停下")
    print("行人可以过马路")
    print("等待时间:60秒")
    
    wait_time = 60
    if wait_time > 30:
        print("⏰ 红灯较长,请耐心等待")
    else:
        print("⏰ 很快就变绿灯了")

elif light == "黄":
    print("\n⚠️ 黄灯闪烁")
    print("车辆应减速准备停车")
    print("行人请不要开始过马路")
    print("即将变灯:3秒")
    
    position = input("你的车离路口多远?(近/远):")
    if position == "近":
        print("🚗 可以缓慢通过")
    elif position == "远":
        print("🚗 请停车等待")
    else:
        print("🚗 请谨慎驾驶")

elif light == "绿":
    print("\n🟢 绿灯亮起")
    print("车辆可以通行")
    print("行人请走斑马线")
    print("通行时间:30秒")
    
    traffic = input("路口拥堵吗?(是/否):")
    if traffic == "是":
        print("🚗 虽然绿灯,但路口拥堵,请慢行")
    elif traffic == "否":
        print("🚗 一路畅通,安全驾驶!")
    else:
        print("🚗 请根据实际情况行驶")

else:
    print("❌ 无效的信号灯颜色!")
    print("请输入:红、黄、绿")

🎯 第五部分:综合练习

5.1 多分支选择题

# 多分支选择题
print("\n🧠 多分支选择题")
print("=" * 40)

print("请判断以下代码的输出结果:")

# 题目1
print("\n📝 题目1:")
code1 = '''
num = 7
if num < 5:
    print("A")
elif num < 10:
    print("B")
elif num < 15:
    print("C")
else:
    print("D")
'''
print(code1)

answer = input("输出结果是? (A/B/C/D): ")
if answer.upper() == "B":
    print("✅ 正确!7<10,所以执行第二个分支")
else:
    print("❌ 错误,应该是B,因为7<10")

# 题目2
print("\n📝 题目2:")
code2 = '''
score = 72
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"
print(grade)
'''
print(code2)

answer = input("输出结果是? (A/B/C/D/F): ")
if answer.upper() == "C":
    print("✅ 正确!72>=70,所以grade='C'")
else:
    print("❌ 错误,应该是C")

# 题目3
print("\n📝 题目3:")
code3 = '''
weather = "多云"
if weather == "晴":
    print("☀️")
elif weather == "雨":
    print("🌧️")
elif weather == "雪":
    print("❄️")
else:
    print("☁️")
'''
print(code3)

answer = input("输出结果是? (☀️/🌧️/❄️/☁️): ")
if answer == "☁️":
    print("✅ 正确!'多云'不匹配前三个条件,执行else")
else:
    print("❌ 错误,应该是☁️")

5.2 代码填空练习

# 代码填空练习
print("\n🔧 代码填空练习")
print("=" * 40)

print("请补全以下代码:")

# 练习1:月份天数判断
print("\n练习1:月份天数判断")
print("""
# 根据月份判断天数
month = int(input("请输入月份(1-12):"))

if month == 2:
    days = 28
______ month == 4 or month == 6:  # 填空1
    days = 30
______ month == 9 or month == 11:  # 填空2
    days = 30
______:  # 填空3
    days = 31

print(f"{month}月有{days}天")
""")

input("按回车查看答案...")
print("✅ 答案:")
print("  填空1:elif")
print("  填空2:elif")
print("  填空3:else")

# 练习2:交通罚款系统
print("\n练习2:交通罚款系统")
print("""
# 超速罚款计算
speed = int(input("车速(km/h):"))
limit = 60

overspeed = speed - limit

if overspeed <= 0:
    fine = 0
    msg = "正常行驶"
______ overspeed <= 10:  # 填空4
    fine = 50
    msg = "轻微超速"
______ overspeed <= 30:  # 填空5
    fine = 200
    msg = "中度超速"
______:  # 填空6
    fine = 1000
    msg = "严重超速"

print(f"{msg},罚款{fine}元")
""")

input("按回车查看答案...")
print("✅ 答案:")
print("  填空4:elif")
print("  填空5:elif")
print("  填空6:else")

📅 下节课预告

第24课:嵌套的俄罗斯套娃——条件嵌套

下节课你将学习:

  1. 如何在条件内部再写条件
  2. 嵌套if语句的使用场景
  3. 避免过多的嵌套层级
  4. 优化嵌套结构的技巧
  5. 制作多层判断系统

预习思考

  1. 什么时候需要在条件里面再判断?
  2. 如何让嵌套代码更容易阅读?
  3. 嵌套太多层会有什么问题?

💬 给家长的话

亲爱的家长

今天孩子学习了if-elif-else多分支语句,这是编程中处理"多选一"决策的核心工具。通过这门课,孩子学会了让程序处理多种不同的情况。

孩子今天学会了

  1. ✅ 掌握if-elif-else多分支语法
  2. ✅ 理解多条件判断的执行顺序
  3. ✅ 注意条件范围的先后顺序
  4. ✅ 编写处理多种情况的程序
  5. ✅ 在实际问题中应用多分支

多分支的重要性

| 概念 | 在编程中的应用 | 实际意义 | 思维培养 |

|------|---------------|---------|---------|

| 多选一 | 处理多种情况 | 分类思维 | 归类能力 |

| 条件顺序 | 从特殊到一般 | 优先级判断 | 逻辑排序 |

| 分支覆盖 | 覆盖所有可能性 | 完备性 | 周全思维 |

| 代码精简 | 避免重复判断 | 效率 | 优化思维 |

您可以这样做

生活应用

  1. 分类整理:用多分支思维整理物品
  2. 决策制定:列出多种选择的判断条件
  3. 游戏设计:设计有多条路线的游戏
  4. 学习规划:根据不同成绩制定计划

思维训练

  1. 讨论:如何合理安排多个条件的顺序?
  2. 思考:有没有更好的方式处理多选一?
  3. 实践:设计一个多选项的调查问卷
  4. 改进:优化现有的判断逻辑

温馨提示

  • 多分支让程序能处理复杂情况
  • 条件顺序很重要,从特殊到一般
  • 鼓励孩子思考所有可能的情况
  • 通过实际应用加深理解

🏆 今日成就

完成了今天的学习,你:

🎯 掌握了多分支语句

🔄 理解了条件执行顺序

🧩 学会了处理多种情况

🤔 培养了分类思维

🔧 解决了实际问题

挑战任务

  1. 设计智能点餐系统
  2. 制作交通信号灯模拟器
  3. 创建多路线迷宫游戏
  4. 改进现有的判断逻辑

🌟 编程心法