🗺️ 计算机科学 4
第 21-23 关
🔎 📋 👣

认识“数组迭代”

Array Iteration

核心本领:
把一整队东西,
从头到尾,一个一个地看过去!

#21 沙蛇 #22 奇数沙尘暴

一、什么是数组迭代?

想象有一排小椅子,每个椅子上坐着一个“东西”(硬币、敌人、名字)。

迭代 (Iteration) 就是让你的“手指”,从第 0 个椅子开始,一直指到最后一个。

  • Array / List: 排好队的一排东西。
  • Index: 椅子上的编号 (0, 1, 2...)。
💰0
👾1
💎2
🛡️3
👆

index (小手指)

🐍 🪙 📏

关卡 21:找到“最近”的金币

任务目标

沙漠里全是硬币,但我只要离我最近的那一枚!

思考方法

  1. 先假装最近距离是无限大 (9999)。
  2. 用手指 (Index) 指向每一枚硬币。
  3. 比较 (Compare):如果这枚硬币比我之前记录的更近,那它就是新的“最近硬币”!
Min Search Algorithm
最小值搜索算法

像老师找“全班最矮”的同学:
先看第一个,记下来;
再看第二个,如果更矮,就更新记录...

核心代码:打擂台

nearest = None
minDist = 9999  # 初始设个超级大的数
index = 0

while index < len(coins):
    coin = coins[index]
    dist = hero.distanceTo(coin)
    
    # 👇 挑战擂主!如果现在的更近
    if dist < minDist:
        nearest = coin    # 更新最近的硬币
        minDist = dist    # 更新最短距离记录
        
    index += 1

关键点:

nearest = None
一开始两手空空。

dist < minDist
这是核心判断!只有比当前的记录更好,才更新。

🌪️ 🤝 👹

关卡 22:隔一个挑一个

我们要处理一个混合名单:朋友兽人 混在一起。

👹0
👱‍♀️1
👹2
👱‍♂️3
👹4
👱‍♀️5

偶数 Even (0, 2, 4)

是兽人 (Enemy) → 攻击!

奇数 Odd (1, 3, 5)

是朋友 (Friend) → 跳过!

跳着走:Step / Stride

平时我们是一个一个数:index += 1

这次我们要跳着数index += 2

就像玩跳房子!
从 0 跳到 2,再跳到 4...
直接略过了中间的 1, 3, 5。
everybody = ['Yetu', 'Tabitha', 'Rasha'...]
index = 0

while index < len(everybody):
    enemy = everybody[index]
    
    # ⚔️ 攻击兽人
    hero.attack(enemy)
    
    # 🏃‍♂️ 关键:每次加 2,跳过朋友!
    index += 2

📚 数组迭代三大模板

这些代码以后会经常用到,请记在小本本上!

1. 普通遍历

每一个都看

index += 1
👀

2. 跳跃遍历

隔一个看一个

index += 2
🐇

3. 找最好 (Min/Max)

打擂台法

if score > best:
🏆