🗺️ 计算机科学 4
Loading...
🤖 📜 🍬

For 循环

(For Loop)

自动点名机一样的魔法,
帮我们处理成堆的糖果和士兵!

自动点名机 vs 手动点名

While 循环 (手动)

像老师拿着名单,一个一个数:
“第0个...第1个...第2个...”
很累,容易数错!

For 循环 (自动)

像全自动点名机!
“下一个!”
自动叫出每一个朋友的名字。

#  For 循环:简单!
for friend in hero.findFriends():
    hero.command(friend, "attack", enemy)
    # 自动移动到下一个朋友!

️ 数字工厂:range()

🔢

range() 就像一个神奇的数字工厂!

你告诉它要生产多少个数字,它就会从 0 开始生产。

range(4) 生产出:
0, 1, 2, 3
#  建造4个士兵
for i in range(4):
    hero.summon("soldier")
    # i 会依次变成 0, 1, 2, 3

# 就像生产了4个玩具!

储物柜编号:List Indexing

列表索引就像学校的储物柜编号

我们想让“0号士兵”去“0号位置”,“1号士兵”去“1号位置”。

士兵[j] ➡️ 位置[j]
# 用索引 j 像红线一样把它们连起来
for j in range(len(friends)):
    point = points[j]   # 从储物柜取出位置
    friend = friends[j] # 找到对应座位的朋友
    
    hero.command(friend, "move", point)

计数器与空盒子

1. Len() 计数器

len(friends) 告诉我们队伍里有几个人。

2. 列表初始化 []

points = [] 就像准备一排空盒子,等着我们往里面放坐标。

# 准备空盒子
points = []
points[0] = {"x": 33, "y": 42} # 装入第1个
points[1] = {"x": 47, "y": 42} # 装入第2个

# 根据朋友数量决定循环几次
for j in range(len(friends)):
    # ...

多重检查站:Nested Conditions

要执行攻击,必须像过关卡一样,同时满足多个条件!

  1. ✅ 必须有敌人 (enemy)
  2. ✅ 敌人必须是兽人 (ogres)
  3. ✅ 距离必须够近 (< 5)
if enemy and enemy.team == "ogres" \
   and friend.distanceTo(enemy) < 5:
    
    # 三个绿灯全亮才攻击!
    hero.command(friend, "attack", enemy)
else:
    # 否则就乖乖站好
    hero.command(friend, "move", point)

️ 战术大师:阵型与诱饵

️ 防御阵型 (动物园管理员)
像布置棋子一样,把士兵安排在正方形的四个角,保护中间的英雄。
诱饵战术 (壮烈牺牲)
故意派士兵去显眼的地方(分散坐标),吸引敌人的火力,像下棋时的“弃子”。
Strategy Animation

(使用坐标列表精确控制每一个士兵的位置)

For 循环的两种用法

# 用法 1:直接遍历 (简单)
for candy in candies:
    print("吃掉", candy)

适合:不需要知道位置,只需要处理每个东西。

# 用法 2:索引遍历 (配对)
for i in range(len(friends)):
    friend = friends[i]
    point = points[i]

适合:要把“士兵”和“位置”一一对应的时候。

For 循环是你的编程小助手,帮你在 CodeCombat 中指挥千军万马! ✨