第24课:嵌套的俄罗斯套娃——条件嵌套
🎯 本课目标
- 理解条件嵌套的概念和用途
- 掌握在if语句内部再写if语句的技巧
- 学会处理多层级的判断逻辑
- 能够优化嵌套结构,避免过度嵌套
- 制作需要多层次判断的实用程序
🤔 趣味引入:生活中的"层层判断"
想象一下:生活中的很多决定需要层层判断:
- 🎒 如果要出门:
- 如果是晴天 → 戴帽子
- 如果是雨天 → 带伞
- 如果雨很大 → 穿雨衣
- 如果雨很小 → 打伞就行
- 📚 如果要学习:
- 如果有作业 → 先做作业
- 如果作业难 → 请教老师
- 如果作业简单 → 自己做
- 如果没作业 → 复习功课
这就是条件嵌套——在条件里面再套条件,像俄罗斯套娃一样一层套一层!
🔧 第一部分:认识条件嵌套
1.1 什么是条件嵌套?
# 条件嵌套基本概念
print("🎯 认识条件嵌套")
print("=" * 50)
print("""
条件嵌套:在if语句内部再写if语句
就像俄罗斯套娃:
┌─────────────────────────┐
│ 外层条件判断 │
│ ┌───────────────────┐ │
│ │ 内层条件判断 │ │
│ │ ┌─────────────┐ │ │
│ │ │ 更内层判断 │ │ │
│ │ └─────────────┘ │ │
│ └───────────────────┘ │
└─────────────────────────┘
""")
# 简单嵌套示例
print("📝 简单嵌套示例:")
weather = "雨"
have_umbrella = True
if weather == "雨":
print("🌧️ 下雨了")
if have_umbrella:
print("☂️ 我有伞,可以出门")
else:
print("🏠 没带伞,等雨停")
else:
print("☀️ 天气好,出门吧")
print("\n✅ 程序继续执行...")
1.2 嵌套的基本语法
# 嵌套语法详解
print("\n📚 嵌套语法详解")
print("=" * 50)
print("""
📋 嵌套语法格式:
if 外层条件1:
# 外层条件1为True
if 内层条件A:
# 内外条件都满足
代码块A
else:
# 外层满足,内层不满足
代码块B
else:
# 外层条件1为False
if 内层条件C:
# 外层不满足,内层满足
代码块C
else:
# 内外都不满足
代码块D
💡 注意:
1. 内层if也要有正确的缩进
2. 每层缩进增加4个空格
3. 不要嵌套太深(一般不超过3层)
""")
# 嵌套层级演示
print("\n🎬 嵌套层级演示:")
print("层级1:检查是否周末")
is_weekend = True
print(f"是周末吗?{is_weekend}")
if is_weekend:
print(" 层级2:检查天气")
weather = "晴"
print(f" 天气:{weather}")
if weather == "晴":
print(" 层级3:检查作业")
homework_done = True
print(f" 作业做完?{homework_done}")
if homework_done:
print(" ✅ 出去玩!")
else:
print(" 📚 先做作业")
else:
print(" 在家休息")
else:
print(" 去上学")
🔄 第二部分:嵌套的实际应用
2.1 双层嵌套
# 双层嵌套应用
print("🔄 双层嵌套应用")
print("=" * 50)
# 示例1:游乐场门票系统
print("🎡 游乐场门票系统")
print("-" * 30)
age = int(input("请输入年龄:"))
height = float(input("请输入身高(厘米):"))
print(f"\n年龄:{age}岁,身高:{height}厘米")
if age >= 12:
print("✅ 年龄达标")
if height >= 140:
print("🎢 可以玩过山车!")
print("🎠 可以玩旋转木马!")
print("🎪 可以玩海盗船!")
else:
print("🎠 身高不够,只能玩温和项目")
print("🎡 可以坐摩天轮")
else:
print("👶 小朋友专区")
if height >= 100:
print("🎠 可以玩旋转木马")
print("🚂 可以坐小火车")
else:
print("🎪 只能在幼儿区玩耍")
# 示例2:超市购物优惠
print("\n🛒 超市购物优惠系统")
print("-" * 30)
total = float(input("购物总金额(元):"))
has_vip_card = input("有会员卡吗?(是/否):")
print(f"\n购物金额:{total}元,会员卡:{has_vip_card}")
if total >= 100:
print("✅ 满100元,有优惠资格")
if has_vip_card == "是":
discount = total * 0.8
print(f"🎉 VIP会员:打8折!")
print(f"💵 原价:{total}元")
print(f"💰 实付:{discount}元")
print(f"🎁 节省:{total - discount}元")
else:
discount = total * 0.9
print(f"🎉 普通顾客:打9折!")
print(f"💵 原价:{total}元")
print(f"💰 实付:{discount}元")
print(f"🎁 节省:{total - discount}元")
else:
print("❌ 不满100元,无优惠")
print(f"💵 需支付:{total}元")
2.2 三层嵌套
# 三层嵌套应用
print("\n🎯 三层嵌套应用")
print("=" * 50)
# 示例:学校活动报名系统
print("🏫 学校活动报名系统")
print("-" * 30)
print("今天学校有运动会、文艺汇演和科技展览")
print("你需要根据条件选择参加的活动\n")
grade = input("你所在的年级(1-6):")
has_talent = input("你有特长吗?(是/否):")
is_healthy = input("你身体健康吗?(是/否):")
print(f"\n年级:{grade}年级")
print(f"有特长:{has_talent}")
print(f"身体健康:{is_healthy}")
print("\n📋 活动推荐:")
if int(grade) >= 4:
print("✅ 高年级学生")
if has_talent == "是":
print("✅ 有特长")
if is_healthy == "是":
print("🎭 推荐:参加文艺汇演表演节目!")
print("🏃 也可以参加运动会")
print("🔬 还可以参观科技展览")
else:
print("🎭 推荐:参加文艺汇演表演节目!")
print("📚 不适合剧烈运动")
else:
print("❌ 没有特长")
if is_healthy == "是":
print("🏃 推荐:参加运动会!")
print("🔬 也可以参观科技展览")
else:
print("🔬 推荐:参观科技展览")
print("📚 适合安静的活动")
else:
print("👶 低年级学生")
if has_talent == "是":
print("✅ 有特长")
if is_healthy == "是":
print("🎭 推荐:参加文艺汇演!")
print("🏃 也可以参加趣味运动会")
else:
print("🎭 推荐:参加文艺汇演!")
print("🎨 适合展示才艺")
else:
print("❌ 没有特长")
if is_healthy == "是":
print("🏃 推荐:参加趣味运动会!")
print("🎪 有很多好玩的游戏")
else:
print("🔬 推荐:参观科技展览")
print("🎨 也有很多有趣的展示")
🎮 第三部分:嵌套实战练习
3.1 交互式嵌套练习
# 交互式嵌套练习
print("🎮 交互式嵌套练习")
print("=" * 50)
# 练习1:早餐选择器
print("练习1:智能早餐选择器")
print("-" * 30)
time = input("现在几点?(输入小时,如7、8、9):")
hungry = input("你饿吗?(是/否):")
has_milk = input("家里有牛奶吗?(是/否):")
print(f"\n⏰ {time}点,饿了:{hungry},有牛奶:{has_milk}")
if int(time) <= 8:
print("🕗 还早,可以慢慢准备")
if hungry == "是":
print("🍳 做个丰盛早餐")
if has_milk == "是":
print("🥛 牛奶配面包,完美!")
else:
print("🥪 喝点水,吃三明治")
else:
print("🥣 简单吃点就好")
if has_milk == "是":
print("🥛 喝杯牛奶")
else:
print("🍎 吃个水果")
else:
print("🕘 来不及了,简单解决")
if hungry == "是":
print("🥐 带个面包路上吃")
if has_milk == "是":
print("🥛 带上牛奶")
else:
print("🧃 买瓶饮料")
else:
print("⏰ 赶时间,到学校再吃")
# 练习2:周末活动规划
print("\n练习2:周末活动规划")
print("-" * 30)
weather = input("周末天气如何?(晴/雨/阴):")
money = input("你有零花钱吗?(有/没有):")
friend = input("朋友有空吗?(有/没有):")
print(f"\n天气:{weather},零花钱:{money},朋友:{friend}")
if weather == "晴":
print("☀️ 天气好,适合外出")
if money == "有":
print("💰 有钱花")
if friend == "有":
print("🎮 和朋友去游乐场!")
print("🍦 一起吃冰淇淋")
else:
print("🛍️ 自己去逛街")
print("📚 买本书看看")
else:
print("💸 没钱")
if friend == "有":
print("🏃 和朋友去公园跑步")
print("⚽ 免费的运动也很开心")
else:
print("🚶 一个人去散步")
print("🌳 呼吸新鲜空气")
elif weather == "雨":
print("🌧️ 下雨天")
if money == "有":
print("💰 有钱")
if friend == "有":
print("🎬 和朋友去看电影!")
print("🍿 买爆米花")
else:
print("📖 去书店看书")
print("☕ 顺便喝杯咖啡")
else:
print("💸 没钱")
if friend == "有":
print("🏠 邀请朋友来家里玩")
print("🎲 一起玩游戏")
else:
print("💻 在家上网")
print("📺 看看电视")
else:
print("☁️ 阴天")
print("🎯 适合室内活动")
if money == "有":
if friend == "有":
print("🎳 去打保龄球!")
else:
print("🎨 去美术馆")
else:
if friend == "有":
print("🏠 在家一起做饭")
else:
print("📚 在家学习")
3.2 嵌套迷宫游戏
# 嵌套迷宫游戏
print("\n🧩 嵌套迷宫游戏")
print("=" * 50)
print("欢迎来到嵌套迷宫!")
print("这是一个需要层层判断的冒险游戏。")
print("每个选择都会影响后面的道路。\n")
print("🏰 你站在一座城堡门前...")
door_open = input("门是开着的吗?(是/否):")
if door_open == "是":
print("\n🚪 你走进城堡大厅...")
print("大厅里有三个通道:左、中、右")
channel = input("选择通道(左/中/右):")
if channel == "左":
print("\n🔦 你走进左边的通道...")
print("通道尽头有一扇门")
has_key = input("你有钥匙吗?(是/否):")
if has_key == "是":
print("\n🔑 你用钥匙打开了门!")
print("房间里全是金银财宝!")
print("🎉 恭喜你找到了宝藏!")
else:
print("\n🚫 门锁着,你没有钥匙")
print("你只能原路返回...")
print("😔 探险失败")
elif channel == "中":
print("\n🌉 你走上中间的通道...")
print("前面有一座吊桥,下面是深渊")
bridge_safe = input("吊桥看起来安全吗?(是/否):")
if bridge_safe == "是":
print("\n🚶 你小心翼翼地走过吊桥...")
print("对面是一个美丽的花园!")
print("🌸 你在花园里愉快地游玩")
else:
print("\n😰 吊桥摇摇晃晃,很危险")
print("你决定不过去了...")
print("你找到了一条小路绕了过去")
print("🌿 虽然辛苦,但安全到达")
elif channel == "右":
print("\n🪜 你走进右边的通道...")
print("这是一个螺旋楼梯")
go_up = input("往上走还是往下走?(上/下):")
if go_up == "上":
print("\n🏔️ 你爬到塔顶!")
print("风景太美了!")
see_treasure = input("你看到远处有闪光,去看看吗?(是/否):")
if see_treasure == "是":
print("💎 你找到了隐藏的宝石!")
print("🎉 冒险成功!")
else:
print("😴 你在塔顶休息了一会儿就下去了")
print("虽然没有找到宝藏,但看到了美景")
else:
print("\n🕳️ 你走下楼梯...")
print("地下室黑漆漆的")
have_torch = input("你有手电筒吗?(是/否):")
if have_torch == "是":
print("🔦 你照亮了地下室")
print("发现了一个秘密通道!")
print("🎉 你找到了出口!")
else:
print("🌑 太黑了,什么都看不见")
print("你只好摸索着回去了")
else:
print("❌ 无效的选择,你迷路了...")
else:
print("\n🚫 门关着,你进不去")
try_again = input("要试着推一下吗?(是/否):")
if try_again == "是":
print("💪 你用力推门...")
door_opens = input("门开了吗?(是/否):")
if door_opens == "是":
print("🎉 门开了!你成功进入城堡!")
print("虽然耽误了一些时间,但总算进来了")
else:
print("😤 门纹丝不动")
print("看来今天不适合探险...")
else:
print("🏠 你决定回家了")
print("也许下次再来探险吧")
print("\n🎬 冒险结束!谢谢游玩!")
📊 第四部分:嵌套优化技巧
4.1 避免过度嵌套
# 避免过度嵌套
print("📊 嵌套优化技巧")
print("=" * 50)
print("""
⚠️ 嵌套太深的危害:
1. 代码难以阅读
2. 容易出错
3. 难以维护
4. 逻辑混乱
💡 优化原则:
1. 嵌套不超过3层
2. 能用elif不用嵌套
3. 提前返回减少嵌套
4. 合并条件简化逻辑
""")
# 不好的写法:嵌套太深
print("❌ 不好的写法(嵌套太深):")
score = 85
attendance = 95
behavior = "好"
if score >= 60:
if attendance >= 80:
if behavior == "好":
print("优秀学生")
else:
print("需要改进行为")
else:
print("出勤不足")
else:
print("成绩不及格")
# 好的写法:使用逻辑运算符
print("\n✅ 好的写法(使用逻辑运算符):")
score = 85
attendance = 95
behavior = "好"
if score >= 60 and attendance >= 80 and behavior == "好":
print("优秀学生")
elif score >= 60 and attendance >= 80:
print("成绩和出勤达标,但行为需改进")
elif score >= 60:
print("成绩达标,但出勤不足")
else:
print("成绩不及格")
4.2 嵌套优化实例
# 嵌套优化实例
print("\n🎯 嵌套优化实例")
print("=" * 50)
# 原始版本:多层嵌套
print("原始版本(多层嵌套):")
def check_student_v1(score, attendance, homework):
if score >= 60:
if attendance >= 80:
if homework >= 80:
print("优秀学生")
else:
print("作业需改进")
else:
print("出勤不足")
else:
print("成绩不及格")
check_student_v1(85, 90, 70)
# 优化版本1:提前返回
print("\n优化版本1(提前返回):")
def check_student_v2(score, attendance, homework):
if score < 60:
print("成绩不及格")
return
if attendance < 80:
print("出勤不足")
return
if homework < 80:
print("作业需改进")
return
print("优秀学生")
check_student_v2(85, 90, 70)
# 优化版本2:合并条件
print("\n优化版本2(合并条件):")
def check_student_v3(score, attendance, homework):
if score >= 60 and attendance >= 80 and homework >= 80:
print("优秀学生")
elif score >= 60 and attendance >= 80:
print("作业需改进")
elif score >= 60:
print("出勤不足")
else:
print("成绩不及格")
check_student_v3(85, 90, 70)
# 对比三种写法
print("\n📊 三种写法对比:")
print("1. 多层嵌套:逻辑清晰但代码冗长")
print("2. 提前返回:简洁高效,推荐使用")
print("3. 合并条件:最简单,适合简单逻辑")
🎯 第五部分:综合练习
5.1 嵌套逻辑题
# 嵌套逻辑题
print("\n🧠 嵌套逻辑题")
print("=" * 50)
print("请判断以下代码的输出结果:")
# 题目1
print("\n📝 题目1:")
code1 = '''
x = 10
y = 5
if x > 5:
if y > 3:
print("A")
else:
print("B")
else:
if y > 3:
print("C")
else:
print("D")
'''
print(code1)
answer = input("输出结果是? (A/B/C/D): ")
if answer.upper() == "A":
print("✅ 正确!x>5且y>3,所以输出A")
else:
print("❌ 错误,应该是A")
# 题目2
print("\n📝 题目2:")
code2 = '''
num = 15
if num > 20:
print("大")
elif num > 10:
if num > 15:
print("中大")
else:
print("中小")
else:
print("小")
'''
print(code2)
answer = input("输出结果是? (大/中大/中小/小): ")
if answer == "中小":
print("✅ 正确!10<num<=15,输出中小")
else:
print("❌ 错误,应该是中小")
# 题目3
print("\n📝 题目3:")
code3 = '''
a = 3
b = 5
c = 7
if a < b:
if a < c:
print("a最小")
else:
print("c最小")
else:
if b < c:
print("b最小")
else:
print("c最小")
'''
print(code3)
answer = input("输出结果是? (a最小/b最小/c最小): ")
if answer == "a最小":
print("✅ 正确!a=3最小")
else:
print("❌ 错误,应该是a最小")
5.2 代码补全练习
# 代码补全练习
print("\n🔧 代码补全练习")
print("=" * 50)
print("请补全以下代码:")
# 练习1:四季推荐活动
print("\n练习1:四季推荐活动")
print("""
# 根据季节和天气推荐活动
season = input("现在是哪个季节?(春/夏/秋/冬):")
weather = input("今天天气如何?(晴/雨):")
if season == "春":
_______: # 填空1
print("🌸 春天赏花去!")
else:
print("📚 春雨绵绵,在家看书")
______ season == "夏": # 填空2
if weather == "晴":
___________ # 填空3
else:
print("🏊 下雨天,去游泳馆")
______ season == "秋": # 填空4
if weather == "晴":
print("🍁 秋天爬山赏红叶")
______: # 填空5
print("☕ 秋雨凉,喝杯热茶")
______: # 填空6
if weather == "晴":
print("⛷️ 冬天滑雪去!")
else:
print("🏠 下雪天,堆雪人!")
""")
input("按回车查看答案...")
print("✅ 答案:")
print(" 填空1:if weather == '晴'")
print(" 填空2:elif")
print(" 填空3:print('🏊 夏天游泳去!')")
print(" 填空4:elif")
print(" 填空5:else")
print(" 填空6:else")
📅 下节课预告
第25课:成绩评定系统——根据分数判断等级
下节课你将学习:
- 综合运用条件判断知识
- 制作完整的成绩评定系统
- 处理多种评分标准
- 添加详细的评语和建议
- 制作可复用的评定函数
预习思考:
- 如何设计合理的评分等级?
- 除了分数,还需要考虑什么因素?
- 如何给出有针对性的学习建议?
💬 给家长的话
亲爱的家长:
今天孩子学习了条件嵌套,这是在条件判断内部再进行判断的高级技巧。这是编程中处理复杂逻辑的重要方法。
孩子今天学会了:
- ✅ 理解条件嵌套的概念
- ✅ 掌握多层嵌套的语法
- ✅ 处理需要层层判断的场景
- ✅ 优化嵌套结构避免过深
- ✅ 在实际问题中应用嵌套
条件嵌套的重要性:
| 概念 | 在编程中的应用 | 实际意义 | 思维培养 |
|------|---------------|---------|---------|
| 嵌套逻辑 | 处理复杂决策 | 分层思维 | 结构化思考 |
| 层级管理 | 控制嵌套深度 | 简洁性 | 优化思维 |
| 条件合并 | 简化嵌套结构 | 效率 | 抽象思维 |
| 提前返回 | 减少嵌套层级 | 可读性 | 工程思维 |
您可以这样做:
生活应用:
- 决策分析:用嵌套思维分析复杂决策
- 问题分解:把大问题拆成小问题
- 层级分类:对事物进行多层分类
- 规则制定:设计有层次的规则
思维训练:
- 讨论:什么时候需要用嵌套?
- 思考:如何简化复杂的判断?
- 实践:设计一个多层决策系统
- 改进:优化现有的嵌套结构
温馨提示:
- 嵌套是强大的工具,但要适度使用
- 3层以上的嵌套要考虑优化
- 鼓励孩子思考更简洁的写法
- 通过实际应用加深理解
🏆 今日成就
完成了今天的学习,你:
🎯 掌握了条件嵌套
🔄 理解了多层判断
🧩 学会了优化嵌套
🤔 培养了分层思维
🔧 解决了复杂问题
挑战任务:
- 设计多层活动推荐系统
- 制作嵌套迷宫游戏
- 优化现有的嵌套代码
- 创建分层决策工具