# 第02节教案 —— 四个命令：forward/backward/right/left（60分钟）
> **GESP等级：一级 | 考级考点：GESP Python 一级**


> **GESP 考点**：#3-#4 移动转向命令（forward/backward/right/left） | #5 顺序执行
> **教学形式**：上机实操课 —— 每人一台电脑，跟着敲代码、看效果
> **前置基础**：第01节「认识小乌龟」——已安装Python、打出了"小乌龟"窗口、见过`forward`
> **配套文件**：`02_四个命令.py` / `随堂练习_第02节.md` / `课后练习_第02节.md`

---

## 一、GESP 知识映射表

| GESP 一级考点 | 大纲编号 | 本关对应教学环节 | 身体锚点 | 达标标准 |
|-------------|---------|----------------|---------|---------|
| **程序顺序执行** | 1.1.1 | 全课贯穿：每次敲完多行代码按F5，孩子亲眼看到乌龟"先做第一行、再做第二行" | "顺序 = 从上到下，一行一行跑，不跳步" | 孩子能说出"代码是从上往下一行一行执行的，不能跳行" |
| **turtle 移动命令** | 1.2.1 | `forward(距离)` `backward(距离)` `right(角度)` `left(角度)` 四个命令逐一引入，每个都先演示再实操 | forward=往前/backward=后退/right=右转90°/left=左转 | 孩子能正确说出四个命令的名字及其作用 |
| **turtle 转向命令** | 1.2.2 | right(角度) 和 left(角度) 分别演示 90°/45°/180° 的效果 | 右手转=right，左手转=left | 孩子能区分 right 和 left 并理解角度控制转多少 |
| **函数调用方式** | 1.1.3 | 反复书写 `t.forward(100)` 格式，故意漏写括号/点号制造报错 | "点号=遥控器，括号=小书包" | 孩子能写出 `t.命令名(数字)` 的完整格式 |
| **参数的直观理解** | 1.2.3 | forward(50) vs forward(200); right(45) vs right(90) vs right(180) 对比实验 | "数字越大走得越远 / 转得越多" | 孩子能用自己的话说出"括号里的数字控制做多少" |
| **程序调试意识** | 1.3.1 | 故意写 `forward` / `Write` 制造 TypeError 和 NameError，全班一起看报错信息 | "红字不可怕，它是Python在帮你找错误" | 孩子遇到红色报错不再慌张，能尝试读报错信息 |

---

## 二、教学目标

### 2.1 知识目标（下课后孩子能回答）

- 说出 turtle 的四个移动命令：`forward` / `backward` / `right` / `left`
- 解释 `forward(数字)` 控制"走多远"，`right(数字)` 控制"转多少度"
- 说出代码执行方式叫"顺序执行"——从上到下，一行一行跑
- 区分 `right` 和 `left` 的方向差异（右手=right，左手=left）

### 2.2 技能目标（下课后孩子能做到）

- 独立写出完整的 `t.forward(100)` 格式（包含点号、括号、数字）
- 用 `forward` + `right(90)` 的组合让乌龟走出 L 形
- 修改 `right()` 括号里的数字，观察乌龟转弯幅度变化
- 用四个命令的合理组合画出一个封闭的"回"字路径
- 遇到红色报错信息时，能尝试找出拼写问题

### 2.3 情感目标（下课后孩子能感受到）

- "我能用代码控制乌龟了！"——建立编程掌控感
- "原来英文命令没那么可怕"——消除对英文代码的恐惧
- "报错是Python在帮我，不是我笨"——建立健康的调试心态

---

## 三、教学节奏总览（60分钟分钟级拆解）

| 时间段 | 时长 | 环节名称 | 核心活动 | 教学形式 | GESP考点 |
|--------|------|---------|---------|---------|-----------|
| 0-3分钟 | 3' | 复习导入 | "上节课我们认识了谁？"→回忆turtle窗口→"乌龟只会直走不会拐弯？今天教它四个方向！" | 问答+投影 | #5导入 |
| 3-10分钟 | 7' | 情景导入 | "遥控车有四键"比喻→身体演示四个动作→看GIF/代码动图预告本课成果 | 讲授+身体锚点 | #5铺垫 |
| 10-15分钟 | 5' | ①forward精讲 | 打开02_四个命令.py → 看forward代码 → 改数字(100/200/50) → F5对比 | 演示+实操 | #3 #4 |
| 15-20分钟 | 5' | ②backward精讲 | 在forward后面加backward → 对比前进和后退 → 身体锚点 | 演示+实操 | #3 #4 |
| 20-26分钟 | 6' | ③right精讲 | forward→right(90)→forward 走L形 → 改45/180度看变化 | 演示+实操 | #3 #4 |
| 26-30分钟 | 4' | ④left精讲 | right改成left对比 → 身体锚点（左手/右手） | 演示+实操 | #3 #4 |
| 30-33分钟 | 3' | 顺序执行概念 | 宣布"顺序=从上到下，一行一行跑，不跳步"→板书口诀 | 讲授+板书 | #5 |
| 33-43分钟 | 10' | 演示+故意犯错 | 敲forward→F5→加right(90)→F5→"乌龟会拐弯了！"→故意犯错(漏数字/写错命令名)看报错 | 教师演示 | #3 #5 |
| 43-48分钟 | 5' | 实操①补全L形 | 补全随堂练习第1题 → 走L形 → 同桌互相检查 | 个人实操 | #3 #4 #5 |
| 48-53分钟 | 5' | 实操②改度数 | 改right度数(45/60/120/180) → 观察转弯幅度变化 → 填空记录 | 个人实操 | #4 |
| 53-58分钟 | 5' | 实操③画"回"字 | 用四个命令画一个"回"字形路径 → 先讨论再动手 | 小组合作 | #3 #4 #5 |
| 58-60分钟 | 2' | 小测+总结 | 口答"right(90)和right(45)的区别？"→记忆钩子齐读→发课后练习 | 全班问答 | #4 |

---

## 四、详细教学过程

### 第一阶段：导入 —— 复习 + 情景创设（0-10分钟）

#### 4.1.1 复习导入（0-3分钟）

**老师开场白**（面带笑容，语调轻松）：

> "同学们好！上节课我们认识了谁？"
>
> 全班齐答：**小乌龟！**
>
> "对！我们用两行魔法咒语 'import turtle' 和 't = turtle.Turtle()' 召唤了一只小乌龟。还记得按什么键让它跑起来吗？"
>
> 全班齐答：**F5！**
>
> "上节课我们只学了一个命令——谁还记得？"
>
> 引导回答：**forward！** (或者往前走)
>
> "对！`t.forward(100)` 让小乌龟往前走100步。但你有没有发现一个问题——"

**老师停顿2秒，做出"沉思"表情**：

> "我们的小乌龟好像只会'直走'，不会拐弯？你让它往前走，它就直直走——前面是墙它也撞上去！"

**制造悬念，语调升高**：

> "今天我们要教小乌龟四个新本领。学会这四个本领之后，你想让它画什么形状就画什么形状——正方形、长方形、L形、Z字形——全都能画！想学吗？"

#### 4.1.2 情景类比 + 身体锚点预演（3-8分钟）

**老师拿出"四个命令"板书（或PPT）**：

```
📱 遥控车有4个键：       🐢 turtle有4个命令：
  前进  ＝ forward(距离)
  后退  ＝ backward(距离)
  左转  ＝ left(角度)
  右转  ＝ right(角度)
```

**老师**：

> "玩过遥控车吗？遥控车有几个键？四个对不对——前进、后退、左转、右转。turtle也是一样的！只是遥控器变成了键盘，按键变成了代码。"

**身体锚点预演（全班起立）**：

> "来，所有人站起来！我们先用身体记住这四个命令——"

| 老师口令 | 孩子动作 | 对应代码 |
|---------|---------|---------|
| "forward——往前走！" | 向前迈一步 | `t.forward(100)` |
| "backward——往后退！" | 向后退一步 | `t.backward(100)` |
| "right——右转！" | 原地向右转90° | `t.right(90)` |
| "left——左转！" | 原地向左转90° | `t.left(90)` |

重复2遍，边做边喊：

> "forward=往前走！backward=往后退！right=右转！left=左转！"

**坐下后**：

> "好，你的身体已经会了这四个命令。现在我们要让电脑屏幕上的小乌龟也学会！"

#### 4.1.3 展示本课目标成果（8-10分钟）

**老师打开一个提前写好的演示文件（或直接投影教案中的"预期成果"代码）**：

```python
# 本课结束前，你也能写出这样的代码！
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)
```

> "看到这几行代码了吗？猜猜乌龟会画出什么？"
>
> 引导回答：**正方形！**
>
> "对！就靠 forwarding 和 right 这两个命令的重复，就能画一个正方形。今天你就能学会——准备好了吗？"

---

### 第二阶段：知识点精讲 —— 四个命令逐个学（10-30分钟）

> **重要教学原则**：每个命令遵循"看代码 → 敲一遍 → F5跑 → 看效果 → 改数字再跑"的循环。不解释原理，先让眼睛看到、手敲到。

#### 4.2.1 精讲①：forward（10-15分钟）

**打开代码文件**：

> "请打开 `02_四个命令.py`。看到第1段代码了吗？"
>
> "老师先不改你的代码，先看投影——"

**老师在投影上展示并敲一遍**：

```python
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.speed(3)

# ===== forward 演示 =====
t.forward(100)

turtle.done()
```

**老师**：

> "看到这一行 `t.forward(100)` 了吗？来，在你的电脑上也找到它，把数字100改成200——然后按 F5！"

**孩子操作，老师巡视**。

> "看到了吗？乌龟走得更远了！200步比100步远一倍！"
>
> "现在把200改成50，F5——"
>
> "看到了吗？50步只走了一小段。"
>
> "所以——**
> **`forward(数字)` 里的数字越大，乌龟走得越远；数字越小，走得越近！**"

**追问（全班齐答）**：

> "想让乌龟走得超远，数字要——？"（大！）
> "想让乌龟只走一小步，数字要——？"（小！）

**板书记忆钩子**：

```
forward = 往前走
数字越大走得越远，数字越小走得越近
```

#### 4.2.2 精讲②：backward（15-20分钟）

**老师展示新代码**：

```python
# ===== backward 演示 =====
t.forward(100)
t.backward(50)
```

> "在 forward 下面加一行 `t.backward(50)`。"
>
> "猜猜乌龟会做什么？先往前走100步，然后——往后退50步！"

**孩子操作**：

> "来，在自己电脑上加这一行。forward(100)下面加 backward(50)。按 F5！"

**老师巡视**，确认每个孩子都看到"乌龟往前走又往后退了一半"的效果。

> "看到没？`backward` = 往后退，跟 forward 相反。forward 往前走，backward 往后退。"

**追问**：

> "如果 `t.forward(100)` 后面加 `t.backward(200)`，乌龟会停在哪儿？"
> 
> 引导回答：往前走100，退200，等于比起点还往后100步。

**板书记忆钩子**：

```
backward = 往后退
forward 和 backward 方向相反！
```

**身体锚点**：老师向前迈一步→"forward！"→向后退一步→"backward！"

#### 4.2.3 精讲③：right——转弯！（20-26分钟）

> **这是本课最关键的环节**——第一个转弯命令，孩子会亲眼看到"乌龟不再是直走"。

**老师**（语气充满期待）：

> "现在到了最酷的部分——让乌龟转弯！仔细看——"

**在 forward + backward 后面添加代码**：

```python
# ===== right 演示 =====
t.forward(100)
t.right(90)
t.forward(80)
```

> "先往前走100步——然后 `t.right(90)`——右转90度——再往前走80步！按 F5！"

**孩子第一次看到"L形"路线，通常会"哇"出来。**

**老师追问**：

> "看到了吗？乌龟走了一条直线，然后——拐弯了！再走一条直线。这是什么形状？"
>
> 引导回答：**L形！** / 直角拐弯！

**关键问题（全班讨论）**：

> "如果我改成 `t.right(45)` 呢？45度和90度有什么不同？"

**让孩子自己试**：把 90 改成 45，F5。

> "看到了吗？45度拐的是一个'斜斜的弯'，不像90度那么'方方正正'。"
>
> "那 `t.right(180)` 呢？"

**再试**：把 45 改成 180，F5。

> "180度 = 掉头！乌龟直接转了半个圈，面朝相反方向了。"

**板书记忆钩子**：

```
right(90) = 右转90度 = 转一个直角
right(45) = 右转45度 = 转半个直角（斜的）
right(180) = 右转180度 = 掉头！
数字越大，转得越多！
```

**身体锚点**：全班起立，老师说"right(90)"，孩子原地右转90°。

> "right = 右手边转！记住——右手拿笔，right 就是右手的方向！"

#### 4.2.4 精讲④：left——左手边转（26-30分钟）

> **left 和 right 对称教学**，用"镜像"概念让孩子快速理解。

**老师**：

> "刚才我们用 right 向右转。如果我想让乌龟向左转呢？用——"
>
> "`left`！和 right 正好相反！"

**投影展示**：

```python
# ===== left 演示 =====
t.forward(100)
t.left(90)
t.forward(80)
```

> "把 right(90) 改成 left(90)，看看乌龟往哪边转？"

**孩子操作**，把 right 换成 left，F5。

> "看到了吗？向右转的时候乌龟往右拐，向左转的时候乌龟往左拐。"
>
> "左右是一对镜像——right = 右手方向，left = 左手方向。"

**身体锚点**：

> "来，举起你的右手——right！举起你的左手——left！"
>
> "上课的时候如果搞混了左右，就看看你的手——right=右手，left=左手！"

#### 4.2.5 总结四个命令 + 顺序执行概念（30-33分钟）

**老师展示完整对照表**：

```
前进 = t.forward(距离)     → 往前走"距离"步
后退 = t.backward(距离)    → 往后退"距离"步
右转 = t.right(角度)       → 向右转"角度"度
左转 = t.left(角度)        → 向左转"角度"度

括号里的数字控制"做多少"！
```

**板书"顺序执行"——核心概念**：

> "现在我要宣布一个非常重要的规则——今天所有代码都遵守这个规则。来，全班跟我读——"

```
顺 序 执 行：
代码从【上】往【下】，一行一行执行
不跳行！不插队！不漏行！

顺序 = 从上到下，一行一行跑，不跳步！
```

**老师用身体演示**：

> "比如这段代码："
>
> ```python
> t.forward(100)    # 第1行
> t.right(90)       # 第2行
> t.forward(50)     # 第3行
> ```
>
> "乌龟先做第一行——往前走100步。再做第二行——右转90度。再做第三行——再往前走50步。"
>
> "这就是顺序执行：**从上到下，一行一行来，不跳行，不插队，不漏行！**"

**追问**：

> "如果把第1行和第2行交换位置——先右转再往前走，结果会一样吗？"
>
> 全班："不一样！"
>
> "对！顺序很重要！先转再走和先走再转，路线完全不同。"

---

### 第三阶段：教师演示 + 故意犯错（33-43分钟）

#### 4.3.1 完整演示：从零到L形（33-38分钟）

**老师用投影完整演示一遍"从零写代码"的过程**：

> "现在老师从头到尾演示一遍，你们仔细看每一步——然后自己跟着做。"

**Step 1**：打开 `02_四个命令.py` 的新文件

**Step 2**：敲入（逐行，每敲一行按一次F5）：

```python
# 第一行——导入魔法
import turtle

# 第二行——创建小乌龟
t = turtle.Turtle()
t.shape("turtle")
t.speed(3)

# 第三行——往前走
t.forward(100)
```

**按F5**：乌龟往前走了一条线。

> "现在我要加一个转弯——"

```python
# 第四行——右转
t.right(90)
```

**按F5**：咦？画面没有变化！因为只转了弯没走路，画面看不出。

> "不加forward，光转弯你看不出来。再加一行——"

```python
# 第五行——再往前走
t.forward(80)
```

**按F5**：**乌龟形成了一个L形！**

**老师夸张的语气**：

> "看到了吗？乌龟**会拐弯了**！"
>
> "原来只会走直线的小乌龟，现在会拐弯了！这就是 `right(90)` 的魔法！"

#### 4.3.2 故意犯错①：忘了写数字（38-40分钟）

> **目的**：制造 TypeError，教孩子看报错信息。

**老师**：

> "现在老师故意犯一个错误。你们看好了——如果我写了 `forward` 但不写数字，会发生什么？"

```python
t.forward()    # 忘了写数字！
```

**按F5**：

**屏幕出现红色报错**：

```
TypeError: forward() missing 1 required positional argument: 'distance'
```

**老师**（不慌不忙，语气平静）：

> "哇，出现红色文字了！看起来很吓人，对不对？不要怕——这其实是Python在**帮我们找错误**。"
>
> "我来看看它说了什么——'forward() missing 1 required argument: distance'——翻译一下：'forward() 漏了一个必要的参数：距离'。"
>
> "Python在说：'你写了我forward，但你没告诉我走多远啊！括号里要装数字！'"

**板书**：

```
TypeError: 类型错误
→ 你给命令的东西不对！
forward()不加数字 → Python不知道走多远
```

> "所以记住——**每一个命令后面的括号里都要有数字！** `forward(100)` 不是 `forward()`。"

#### 4.3.3 故意犯错②：命令名写错（40-43分钟）

> **目的**：制造 NameError，巩固命令名记忆。

**老师**：

> "再来一个常见错误——如果我把 `right` 写成 `Write`（大写的W），会怎样？"

```python
t.Write(90)    # 写成了Write！
```

**按F5**：

**屏幕出现红色报错**：

```
NameError: name 'Write' is not defined
```

**老师**：

> "Python说：'我找不到 Write 这个命令！'——因为Python只有 `write`（小写，但那是另一个功能），没有 `Write`。"
>
> "这就像你喊一个人的名字喊错了——'王小明'你喊成了'王小朋'，人家不会理你。"
>
> "Python也一样——你写错了命令名，它就不认识。"

**板书**：

```
NameError: 名字错误
→ Python不认识你写的命令名！
right  ≠ Write（大小写不同也不行）
forward ≠ forword（拼写不对也不行）
```

**老师总结**：

> "以后你看到红色报错，不要慌。先看它是什么类型的错误——"
> - "**TypeError**：数字没写对（漏了数字/多写了数字）"
> - "**NameError**：命令名写错了（拼写不对/大小写不对）"
>
> "红色不可怕——那是Python在跟你说话，告诉你哪里出问题了。学会看报错，就是学会编程的第一步！"

---

### 第四阶段：学生实操（43-58分钟）

#### 4.4.1 实操①：补全代码走L形（43-48分钟）

> **目的**：巩固 forward + right(90) 的组合

**老师发题**（投影或 `随堂练习_第02节.md` 第1题）：

> "现在轮到你们自己动手了！"
>
> "第1题：补全下面的代码，让乌龟走一个L形。"

```python
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.speed(3)

# 走L形：先往前走，右转，再往前走
t.forward(150)
t._______(____)      # ① 转弯命令和角度
t.forward(____)      # ② 第二段走多少步？
```

**答案**：`t.right(90)`、`t.forward(80)`（第二段数字合理即可）

**老师巡视** 5 分钟，重点检查：
- `right` 拼写是否漏了 `h`（写成 `rigt`）
- 括号是否为英文括号 `()` 而非中文括号 `（）`
- 点号是否遗漏（`t.right` 不是 `tright`）
- 第二段的数字是否合理（大于0，小于150）

**做完后对答案**：

> "第①空填什么？——right(90)！第②空填什么？——比如80！你的L形出来了吗？"

**快速追问（全班举手）**：

> "谁把 `right` 改成 `left` 试试？L形朝哪边？"（朝左）
> "谁把 `90` 改成 `45`？L形变成什么了？"（斜角拐弯）

#### 4.4.2 实操②：改right度数看效果（48-53分钟）

> **目的**：深入理解"角度数字控制转多少"

**老师发题**（`随堂练习_第02节.md` 第2题）：

> "第2题：保持 L 形框架不变，只改 `right()` 括号里的度数，观察乌龟转弯的变化。填写记录表。"

**固定代码**：

```python
t.forward(100)
t.right(______)    # ← 只改这个数字
t.forward(80)
```

**记录表**：

| right(度数) | 乌龟转了多少？ | 画出来的形状像什么？ |
|------------|-------------|-------------------|
| 45 | 转____度（半个直角） | 拐了一个____角 |
| 90 | 转____度（一个直角） | 拐了一个____角 |
| 120 | 转____度 | 拐了一个____角 |
| 180 | 转____度（掉头） | 画出一条____线 |

**答案**：
- 45° → 锐角
- 90° → 直角
- 120° → 钝角
- 180° → 往回走（直线折返）

**关键追问**：

> "从45度开始，数字越大，乌龟转得——？"
>
> 全班：**越多！/越大！**
>
> "对！`right(数字)` 的数字控制的是'转弯的幅度'。数字越大，转得越多。"
>
> "那 `right(360)` 呢？——转了一圈，回到原方向，等于没转！"

#### 4.4.3 实操③：用四个命令画"回"字（53-58分钟）

> **目的**：综合运用四个命令，培养顺序思维能力。
> **这是本课的最高挑战**——"回"字需要向内绕一圈并回来。

**老师发题**（`随堂练习_第02节.md` 第3题）：

> "第3题，也是今天的挑战题——用四个命令，画一个'回'字形状。"
>
> "什么叫'回'字？就是外面的一个大框，里面还有一个小框，像口字里面套一个口字。"

**老师先画板书**：

```
   ┌─────────────┐
   │   ┌─────┐   │
   │   │     │   │
   │   └─────┘   │
   └─────────────┘
```

> "但是今天我们不要求画完整的回字——太难了。我们只画一个**简化的"回"形路径**："
>
> "先往前走一段→右转→走一段→右转→走一段→右转→走一段→右转→回到起点"
>
> "等一下，这不就是正方形吗？"
>
> "对！先用 forward + right 走一个正方形。然后——在走回起点后，再用 right(180) 掉头，往前走一段，再走一个小正方形。这就是'回'字的一半！"

**考虑到15分钟实操中只有5分钟给这道题，可以简化要求**：

**初级要求**（全班完成）：

```python
# 画一个"口"字（正方形）
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
```

**挑战要求**（完成快的同学）：

小学生确实不太可能在5分钟内画完完整的"回"字。建议把这道题调整为：

> **画一个"回"字的左上角（一个外面大L + 里面小L）**：

```python
# 外面大L
t.forward(120)
t.right(90)
t.forward(120)

# 右转180度掉头
t.right(180)

# 里面小L（往回走）
t.forward(60)
t.left(90)
t.forward(60)
```

画出的是一个"L形拐角处有个小缩进"的图案——类似于回字的左上角。

**老师巡视**：
- 帮助卡住的孩子："先写一行 forward，F5看看。再加一行 right，F5。一步一步来。"
- 完成快的孩子：鼓励他们加更多组合。

**最后30秒总结**：

> "这道题难不难？难！但你能写出来这么多行代码，已经超级厉害了！没有标准答案——只要你让乌龟走出了你想要的路线，就是胜利！"

---

### 第五阶段：小测 + 课堂总结（58-60分钟）

#### 4.5.1 口答小测（58-59分钟）

> "好，下课之前，老师问几个问题——举手回答！"

**Q1**：
> "`right(90)` 和 `right(45)` 有什么区别？"
>
> 预期回答：right(90)转一个直角（方方正正），right(45)转半个直角（斜斜的）。

**Q2**：
> "如果我想让乌龟掉头（转到完全相反的方向），`right()` 里应该填多少？"
>
> 预期回答：180！（半圈）

**Q3**：
> "`forward` 和 `backward` 有什么区别？"
>
> 预期回答：forward往前走，backward往后退，方向相反。

**Q4**：
> "今天学的四个命令是哪些？全班一起喊——"
>
> 全班：**forward！backward！right！left！**

**Q5**：
> "代码是怎么执行的？从上——？"
>
> 全班：**从上到下！一行一行跑！不跳步！**

#### 4.5.2 关键记忆钩子齐读（59-60分钟）

**老师板书/投影**，全班齐读两遍：

```
顺序 = 从上到下，一行一行跑，不跳步！

forward = 往前走     backward = 往后退
right   = 右手边转   left     = 左手边转
```

**发课后练习**：

> "这张练习卡回家做。回去教爸爸妈妈四个命令——你来当小老师！让他们猜 `forward` 是往前走还是往后退，`right(90)` 是转多少度。"
>
> "下节课我们要用今天学的命令——画正方形！"
>
> "到时候你会发现——把 forward 和 right 重复4遍，就是一个完美的正方形了。下节课见！"

---

## 五、板书设计

```
┌──────────────────────────────────────────────────────────┐
│         第02节：四个命令——forward/backward/right/left       │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  一、四个命令                                            │
│    t.forward(距离)  → 往前走"距离"步                     │
│    t.backward(距离) → 往后退"距离"步                     │
│    t.right(角度)    → 向右转"角度"度                     │
│    t.left(角度)     → 向左转"角度"度                     │
│                                                          │
│  二、括号里的数字控制"做多少"                             │
│    forward(200) > forward(50) → 数字越大走得越远         │
│    right(180) > right(90) > right(45) → 数字越大转得越多 │
│                                                          │
│  三、顺序执行 ★最重要★                                   │
│    代码从【上】往【下】                                   │
│    一行一行执行                                          │
│    不跳行！不插队！不漏行！                               │
│                                                          │
│  四、报错不可怕                                          │
│    TypeError  → 数字没写对（漏了数字/多了数字）           │
│    NameError  → 命令名写错了（拼写不对/大小写不对）       │
│                                                          │
│  五、关键记忆钩子                                        │
│    "顺序 = 从上到下，一行一行跑，不跳步"                  │
│    "forward = 往前走 / backward = 往后退"                │
│    "right = 右手边转 / left = 左手边转"                  │
│    "right(90)转直角，right(45)转斜角，right(180)掉头"    │
└──────────────────────────────────────────────────────────┘
```

---

## 六、故意犯错设计

| 序号 | 错误类型 | 错误代码 | 报错信息 | 教学时机 | 教学目的 |
|------|---------|---------|---------|---------|---------|
| ① | 漏写参数 | `t.forward()` | TypeError: forward() missing 1 required positional argument: 'distance' | 33-38min演示后 | 理解"括号里必须装数字" |
| ② | 命令名拼错 | `t.Write(90)` | NameError: name 'Write' is not defined | 38-40min | 理解"命令名不能写错" |
| ③ | 漏括号 + 空格 | `t.forward 100` | TypeError: 'int' object is not callable | 若时间允许 | 巩固"数字必须在括号里" |
| ④ | 左右颠倒 | `t.left(90)`本应写`t.right(90)` | 运行时形状错误（非语法错误） | 实操环节个别指导 | 建立 debug 意识"结果不对也是bug" |

---

## 七、课堂速查卡（老师口袋版）

### 7.1 课堂口令一览

| 环节 | 口令 | 目的 |
|------|------|------|
| 复习 | "上节课我们认识了谁？按什么键让它跑？" | 回顾turtle和F5 |
| 身体锚点 | "forward=往前走！backward=往后退！right=右转！left=左转！" | 身体记忆 |
| 顺序执行 | "顺序=从上到下，一行一行跑，不跳步！" | 关键记忆钩子 |
| 打字提醒 | "点号=遥控器，括号=小书包" | 语法记忆 |
| 报错提醒 | "红色不可怕——Python在帮你找错误" | 调试心态 |
| right(90) | "右转90度=转一个直角，方方正正" | 角度直觉 |
| right(45) | "右转45度=转半个直角，斜斜的" | 角度对比 |
| right(180) | "右转180度=掉头！" | 半圈直觉 |

### 7.2 巡视五查

| 检查项 | 怎么看 | 怎么改 |
|--------|--------|--------|
| 命令名拼写 | `right`写成`rigt`/`righ` | "漏了字母h——右手（right）里有个h！" |
| 括号格式 | 中文全角`（）` vs 英文半角`()` | "你的括号好胖！Python只吃瘦的英文括号 ()" |
| 点号遗漏 | `tright(90)` 无点号 | "t. 是遥控器，没遥控器乌龟不动" |
| 数字缺失 | `t.forward()` 空括号 | "括号是书包，里面要装数字——告诉乌龟走多远" |
| 命令在done()下面 | 代码不执行 | "turtle.done() = 乌龟说画完了，下面的命令听不见了" |

### 7.3 时间弹性策略

| 如果时间紧（孩子进度慢） | 如果时间松（孩子进度快） |
|---|---|
| 砍掉实操③(画"回"字)，改为全班一起走正方形 | 增加"闪电形"挑战（right(45)+forward+right(90)的组合） |
| left精讲合并到right环节（对称对比） | 增加"自由创作"5分钟——用四个命令画任意形状 |
| 故意犯错只做①（漏数字），②改成口头讲解 | 让孩子自己设计一个"故意犯错"让同桌找bug |
| 小测缩减为2个问题（Q1+Q4） | 增加Q6:"如果我先right(90)再left(90)，乌龟面朝哪？" |

---

## 八、教具准备清单

| 教具 | 数量 | 用途 | 备注 |
|------|------|------|------|
| 电脑（已装Python+turtle） | 每人1台 | 上机敲代码 | 提前确认turtle可用 |
| 投影仪/大屏幕 | 1台 | 教师演示+展示代码 | 核心教具 |
| 白板/黑板+马克笔 | 1套 | 板书+画路线图 | 多色更佳 |
| 02_四个命令.py | 每人1份 | 教学代码文件 | 提前放在桌面 |
| 随堂练习_第02节.md | 每人1份 | 课堂3道实操题 | 提前打印 |
| 课后练习_第02节.md | 每人1份 | 课后作业 | 下课发放 |
| 计时器 | 1个 | 控制环节节奏 | 手机计时即可 |

---

## 九、身体锚点速查卡（老师口袋版）

| 锚点编号 | 身体动作 | 对应概念 | 触发时机 |
|---------|---------|---------|---------|
| 锚点1 | 老师向前迈一步 | `t.forward(距离)` | 每次提到 forward |
| 锚点2 | 老师向后退一步 | `t.backward(距离)` | 每次提到 backward |
| 锚点3 | 老师原地右转90° | `t.right(角度)` | 每次提到 right |
| 锚点4 | 老师原地左转90° | `t.left(角度)` | 每次提到 left |
| 锚点5 | 老师手指从上往下划 | "顺序执行"代码从上到下 | 讲顺序执行时 |
| 锚点6 | 老师摊手看红色报错 | "红色不可怕——Python在帮你" | 报错出现时 |

---

## 十、课堂问题预案

| 可能出现的情况 | 应对方案 |
|-------------|---------|
| 孩子电脑上turtle窗口一闪而过 | 在代码末尾加 `turtle.exitonclick()` 替代 `turtle.done()`，或者教孩子加 `time.sleep(3)` |
| 孩子把 forward 拼成 foward / forword | 全班齐喊"for-ward"（两个音节），强调两个r。指着教室前方说"forward = 朝前走" |
| 孩子问"为什么乌龟生下来面朝右" | "这是Python设计的规则——小乌龟一出生就面朝右边。就像你出生就会哭一样，没有为什么，记住就行。" |
| right 和 left 搞混 | 让孩子举起右手说"right=写字的手"，举起左手说"left=拿橡皮的手"。每节课开始都做一遍 |
| 孩子写代码时速度太快，不按F5检查 | "写一行，跑一次。不要一次写10行再跑——万一有错都不知道错在哪。" 培养"小步快跑"的习惯 |
| 有孩子已经学过turtle | 让他当"助教"，帮助旁边的同学。或者挑战他用 today 的四个命令画一个箭头/五角星 |
| 孩子不敢敲代码（怕敲坏电脑） | "代码敲错了按F5只会出现红色文字，电脑不会坏。你按F5不会爆炸的——我们来试试！" |
| 下课时间到了但实操③没完成 | 改为课后选做题。优先保证 L 形（实操①）每个孩子都跑通——这是本课最核心的产出 |
| 孩子问"为什么95和90看起来差不多" | "95和90只差5度，差别很小。你能看出区别吗？看不出来很正常——差别越小越难看出来。" |
| turtle窗口被关闭了 | 按F6或重新运行代码——窗口会重新弹出来 |

---

> **设计说明**：本教案将17分钟简版扩展为60分钟完整课时，遵循"先身体后代码、先体验后概念、先观察后理解"的教学原则。四个命令分别用4-6分钟精讲，每个都是"看代码→敲一遍→F5跑→看效果→改数字再跑"的五步循环。顺序执行概念不是干讲，而是在孩子亲眼看到"乌龟先做第一行再做第二行"之后自然提炼。故意犯错环节是建立调试心态的关键——TypeError和NameError这两个最常见的报错，孩子在本课就见过、不怕了，后续课程遇到报错就不会慌张。
