友和敌 (Friend or Foe)
战术思路分析:命令拼接
在这场小冲突中,你的英雄就像一位**通信兵**。你不能只喊“战斗!”,也不能只喊“农民ID-123!”,你需要把完整的命令**连接**起来发送出去。
关键技能:字符串连接(String Concatenation)
就像搭积木一样,我们使用 **`+`** 符号将不同的文字块(字符串)和单位的身份信息(`friend.id`)拼接起来,形成一个完整的、可执行的命令。
"去战斗, " + friend.id + "!"
"Go" + " " + ID + "!"
"Go ID-42!"
Python 程序解法
似曾相识的味道 (Déjà Vu)
战术思路分析:用数字唱歌
你要和朋友们一起唱一首关于药水的歌谣。歌词里不断变化的数字(药水数量)必须和固定的歌词(字符串)连接在一起。
难点突破:字符串 + 数字
Python 非常智能,可以直接使用 `+` 符号将数字(如 `10`)和字符串(如 `"药水"`)连接起来。计算机会自动将数字变成文字,然后拼接。
秘诀:更新变量
每次唱完“拿走一个”后,别忘了用 `potionsOnTheWall -= numToTakeDown` 来更新剩余药水的数量,这样下一句歌词才是正确的!
10 + " potions..."
↓
9 + " potions..."
Python 程序解法
罪与罚 (Crime and Punishment)
战术思路分析:火炮定位
火炮手只听懂一种语言:**坐标字符串**! 你必须把目标的 X 坐标、一个空格、和 Y 坐标连接起来,组成一个形如 `"45 30"` 的字符串,火炮才能发射。
三段式拼接
我们使用 **`+`** 符号将三个部分连接起来:
1. 目标的 X 坐标 (`enemy.pos.x`)
2. 固定的空格字符串 (`" "`)
3. 目标的 Y 坐标 (`enemy.pos.y`)
X + " " + Y
"30 45"
Python 程序解法
概念挑战. 空中救援行动 (Air Rescue)
战术思路分析:复习与应用
救援队只接收两种指令:`"Friend "` + 朋友ID (疏散) 或 `"Enemy "` + 敌人ID (消灭)。 这是一次字符串连接的快速实战测验!你需要熟练地将命令关键词和目标的身份信息连接起来。
- **救援命令:** `"Friend " + friend.id`
- **攻击命令:** `"Enemy " + enemy.id`
Say("Friend " + ID)
Say("Enemy " + ID)
Python 程序解法
巫师之门 (Wizard's Gate)
战术思路分析:魔法公式
巫师们用神秘的数字锁住了大门。你需要用**数学公式**来解密!每个巫师的数字都依赖于前一个巫师的数字。
编程数学符号
- 加法:`+`
- 减法:`-`
- 乘法:`*` (不是 x)
- 除法:`/`
- 求余:`%` (取余数,例如 `10 % 3` 结果是 1)
变量接力棒
你需要用变量(如 `las`, `erz`, `sim`)存储每个巫师的秘密数字,然后用这些变量来计算下一个巫师的数字,就像接力跑一样!
A = 10
B = A * 3
C = B + A
Python 程序解法
巫师出没 (Wizards Haunt)
战术思路分析:数字接龙
你来到了巫师的密室,这里的数字谜题依然是**接力赛**。这次的重点是**除法**:你必须确保每次计算都基于前一个巫师提供的数字。
关键:除法 `/`
注意,在编程中,除法 (`/`) 结果可能是小数。但在 CodeCombat 中,只要公式正确,系统就会接受你计算出的结果。
例如:`10 / 4` 结果是 `2.5`。
Step 1: ZSO = 100
Step 2: MIH = ZSO / 4
Step 3: BEA = MIH / 5
Step 4: SAN = MIH - BEA
Python 程序解法
巫师天际层 (Wizard Sky-layer)
战术思路分析:括号的力量
这里的巫师法术非常复杂!如果运算顺序错了,数字就会错,大门就不会打开。
运算优先级
默认规则是:**乘、除**优先于**加、减**。
例如:`5 + 2 * 3` 结果是 `11` (先算 `2*3=6`)。
控制顺序:括号 `()`
我们使用 **括号 `()`** 来强制计算机先进行括号内的运算。
例如:`(5 + 2) * 3` 结果是 `21` (先算 `5+2=7`)。这是解开本关卡的关键!
(A + B) * (C - D)
保证先算加减,再算乘法
Python 程序解法
概念挑战. 真炼金术 (True Alchemy)
战术思路分析:步步为营
炼金术师需要你帮忙计算魔法药水配方。这个挑战的关键在于:**每一步的计算结果都要说出来,并且作为下一步计算的输入。**
变量复用
你不能只写一个总公式。你需要将每一步的结果存入一个新变量 (`sum`, `sub`, `div`, `mult`),然后用 `hero.say()` 将其结果输出。
公式接力
步骤 2 必须使用步骤 1 的结果(`sum`),步骤 3 必须使用步骤 2 的结果(`sub`),以此类推。
R1 = Gold + Silver
Say(R1)
R2 = R1 - Bronze
Say(R2)