第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课:嵌套的俄罗斯套娃——条件嵌套
下节课你将学习:
- 如何在条件内部再写条件
- 嵌套if语句的使用场景
- 避免过多的嵌套层级
- 优化嵌套结构的技巧
- 制作多层判断系统
预习思考:
- 什么时候需要在条件里面再判断?
- 如何让嵌套代码更容易阅读?
- 嵌套太多层会有什么问题?
💬 给家长的话
亲爱的家长:
今天孩子学习了if-elif-else多分支语句,这是编程中处理"多选一"决策的核心工具。通过这门课,孩子学会了让程序处理多种不同的情况。
孩子今天学会了:
- ✅ 掌握if-elif-else多分支语法
- ✅ 理解多条件判断的执行顺序
- ✅ 注意条件范围的先后顺序
- ✅ 编写处理多种情况的程序
- ✅ 在实际问题中应用多分支
多分支的重要性:
| 概念 | 在编程中的应用 | 实际意义 | 思维培养 |
|------|---------------|---------|---------|
| 多选一 | 处理多种情况 | 分类思维 | 归类能力 |
| 条件顺序 | 从特殊到一般 | 优先级判断 | 逻辑排序 |
| 分支覆盖 | 覆盖所有可能性 | 完备性 | 周全思维 |
| 代码精简 | 避免重复判断 | 效率 | 优化思维 |
您可以这样做:
生活应用:
- 分类整理:用多分支思维整理物品
- 决策制定:列出多种选择的判断条件
- 游戏设计:设计有多条路线的游戏
- 学习规划:根据不同成绩制定计划
思维训练:
- 讨论:如何合理安排多个条件的顺序?
- 思考:有没有更好的方式处理多选一?
- 实践:设计一个多选项的调查问卷
- 改进:优化现有的判断逻辑
温馨提示:
- 多分支让程序能处理复杂情况
- 条件顺序很重要,从特殊到一般
- 鼓励孩子思考所有可能的情况
- 通过实际应用加深理解
🏆 今日成就
完成了今天的学习,你:
🎯 掌握了多分支语句
🔄 理解了条件执行顺序
🧩 学会了处理多种情况
🤔 培养了分类思维
🔧 解决了实际问题
挑战任务:
- 设计智能点餐系统
- 制作交通信号灯模拟器
- 创建多路线迷宫游戏
- 改进现有的判断逻辑