TOP SECRET: LEVEL 26-30
🕵️‍♀️

嵌套选择结构

CodeCombat 侦探档案

🪆 层层剥茧
🧠 精密推理

本节课关卡

扣哒世界 · 计算机科学2 · Python · 第26–30关

Python · 本节课关卡

26 · 跃火林中

先读关卡目标,观察地图,再运用本课知识。

27 · 以静制动

先读关卡目标,观察地图,再运用本课知识。

28 · Agrippa守卫战

先读关卡目标,观察地图,再运用本课知识。

29 · 概念挑战. 危险的树

先读关卡目标,观察地图,再运用本课知识。

30 · 组合挑战. 最后的守护者

先读关卡目标,观察地图,再运用本课知识。

学习路线:读目标 → 看图解 → 写代码 → 运行检查

🪆

什么是嵌套选择?

01/10

想象你在玩一个超级侦探游戏,要做层层推理:

  1. 第一层:有没有敌人?
  2. 第二层:如果有,距离够近吗?
  3. 第三层:如果够近,大招好了吗?
"嵌套选择就像俄罗斯套娃,一层套一层!只有打开外面的,才能看到里面的。"
外层
中层
核心
🧅

洋葱剥皮法

02/10

代码也是这样一层层缩进的:

if 外层条件成立:
    if 内层条件成立:
        # 执行核心精细动作
        attack()
    else:
        # 内层不成立
else:
    # 外层都不成立
外层:有敌人?
内层:距离近?
👊 攻击!
🔭

两层侦察系统

03/10
enemy = hero.findNearestEnemy()

if enemy: # 第1层
    dist = hero.distanceTo(enemy)
    if dist < 15: # 第2层
        hero.attack(enemy)
else:
    hero.moveXY(40, 34)
第一步: 确认有人影 (enemy 存在)
⬇️
第二步: 确认在射程内 (< 15m)
⚔️

三层智能战斗

04/10

更高级的 AI 需要三层判断!

if enemy:
  if dist < 10:
    if isReady("cleave"):
      hero.cleave(enemy) # 大招!
    else:
      hero.attack(enemy) # 普攻
  else:
    hero.say(dist) # 太远
1. 有敌人
2. 很近
3. 技能好
💥
⚖️

嵌套 vs 多分支

05/10
多分支 (if-elif-else)
像做选择题 (A/B/C/D)。
处于同一层级,非此即彼。
嵌套选择
像判断题 + 选择题。
先判断大方向,再进入内部做细致选择。
🍱 vs 🧅
便当格子 vs 洋葱层
🧹

为什么用嵌套?

06/10

避免重复检查,逻辑更清晰!

# ❌ 啰嗦写法
if enemy:
  d = dist(enemy)
if enemy and d < 10: # 又查一遍!
  ...
# ✅ 嵌套写法
if enemy:
  d = dist(enemy)
  if d < 10: # 直接用上一层结果
    ...
🧠
聪明的大脑不走回头路
🥘

晚餐吃什么?

07/10
if 妈妈在家:
  if 冰箱有菜:
    if 妈妈不累:
      妈妈做饭() # 幸福!
    else:
      点外卖() # 累了
  else:
    去买菜()
else:
  自己泡面() # 悲催...
👩‍🍳 🍕 🍜
🔒

重要概念:作用域

08/10

内层代码可以访问外层变量!

就像你在客厅(外层)拿了一个苹果,带进卧室(内层)依然可以吃。

if enemy: # 外层确认了enemy
  dist = distanceTo(enemy)
  if dist < 10:
    attack(enemy) # 内层直接用!
客厅 🍎
卧室 (我有🍎了!)
🎓

侦探结案口诀

09/10

"嵌套选择像套娃,
一层一层往里查,
缩进对齐不能差!"

"先判存在再测距,
技能就绪最后查!"

📂
TOP SECRET

我的知识宝藏 · 一页复习

扣哒世界 · 计算机科学2 · Python · 第26–30关

Python · 知识点图
关键字方法 / 函数字符串数字

什么是嵌套选择?

想象你在玩一个超级侦探游戏,要做层层推理:

洋葱剥皮法

代码也是这样一层层缩进的:

两层侦察系统

嵌套选择先判断外层条件,再进入内层判断;每一层都要正确对齐。

enemy = hero.findNearestEnemy()

三层智能战斗

更高级的 AI 需要三层判断!

hero.cleave(enemy) # 大招!

嵌套 vs 多分支

嵌套选择先判断外层条件,再进入内层判断;每一层都要正确对齐。

为什么用嵌套?

避免重复检查,逻辑更清晰!

晚餐吃什么?

嵌套选择先判断外层条件,再进入内层判断;每一层都要正确对齐。

重要概念:作用域

内层代码可以访问外层变量!

本节课关卡:26. 跃火林中;27. 以静制动;28. Agrippa守卫战;29. 概念挑战. 危险的树;30. 组合挑战. 最后的守护者