🗺️ 计算机科学 4
第 24-25 关
👑 🗡️ 🐣

练习数组迭代

Practice Array Iteration

本节课任务:
在一群敌人中,找出那个“最特别”的!
(最强的 💪 或 最弱的 🤏)

#24 脆弱的士气 #25 疯狂 Maxer

一、什么是数组迭代?

Array / List (数组/列表)

一排排好队的东西(敌人、硬币)。

Index (索引/手指)

一个数字变量,像手指一样,从 0 指到最后一个。

“从头到尾,一个一个看过去。”

enemyIndex = 0

while enemyIndex < len(enemies):
    enemy = enemies[enemyIndex]
    
    # 👉 这里对 enemy 做事情
    
    enemyIndex += 1

二、寻找“最大值” (Max Search)

💪

策略:打擂台

  1. 初始化: 假装目前看到的最大生命值是 0
  2. 比较 (Compare): 如果当前敌人比记录的更强...
  3. 更新 (Update): 把“最强”的奖牌颁给它!
就像找班里最高的同学:
手里拿个牌子写着 "0 cm"。
看到第一个人,哇比0高,牌子改成他的身高。
看到第二个人,如果更高,就换牌子...

🏆 寻找最强者的函数

def findStrongestEnemy(enemies):
    strongest = None
    maxHealth = 0 # 🐣 初始值设为很小
    index = 0
    
    while index < len(enemies):
        enemy = enemies[index]
        
        # 💪 谁更强?比一比!
        if enemy.health > maxHealth:
            strongest = enemy
            maxHealth = enemy.health
            
        index += 1
    return strongest

关键点:

  • > 大于号:找更大的。
  • maxHealth = 0:初始门槛很低,谁都能上来。

三、寻找“最小值” (Min Search)

🤏

策略:反着来

  1. 初始化: 假装目前记录的生命值是 99999 (无穷大)。
  2. 比较 (Compare): 如果当前敌人比记录的更弱 (health 更小)...
  3. 更新: 记录下这个新的“最弱者”。
为什么要设成 99999?

如果初始设成 0,没有任何敌人的血量会比 0 还要小,你就永远找不到最弱的那个啦!

🚑 寻找最弱者的代码

weakest = None
minHealth = 99999 # 🏔️ 初始值设为很大
index = 0

while index < len(enemies):
    enemy = enemies[index]
    
    # 🤏 谁更弱?比一比!
    if enemy.health < minHealth:
        weakest = enemy
        minHealth = enemy.health
        
    index += 1

if weakest:
    hero.attack(weakest)

关键点:

  • < 小于号:找更小的。
  • minHealth = 99999:门槛很高,很容易被“更小”的取代。

⚖️ 终极对比:两个模式

结构都是一样的,只有两个地方不同!

🔥 找最大 (Max)

初始值:
很小 (0)

比较符号:
>

if val > best:

❄️ 找最小 (Min)

初始值:
很大 (99999)

比较符号:
<

if val < best: