# 第01节：认识小乌龟

> **🧠 计算机小知识**：电脑有3种"存储器"——RAM（工作台，断电清空）、ROM（保险箱，断电不丢）、Cache（随身本，超快但小）。就像你写作业：桌面=RAM、书包=ROM、手里的笔=Cache！

> **GESP等级：一级 | 考级考点：GESP Python 一级**


| 项目 | 内容 |
|------|------|
| 课程名称 | 认识小乌龟 |
| 课程时长 | 60分钟 |
| GESP考点 | #1程序结构 #2import导入 #3turtle移动 |
| 核心工具 | Python turtle模块 |

---

## 一、导入（10分钟）—— 神秘小乌龟的故事

### 1.1 故事引子（5分钟）

> **老师讲述：**
> "小朋友们，你们知道吗？你们的电脑里住着一只**神秘的小乌龟**！"
> "它平时在睡觉，但只要你对它念一句**咒语**，它就会醒过来！"
> "它最厉害的本领是什么呢？——**画画！**"
> "它会听你的命令，你让它往前走，它就往前走；你让它往后退，它就往后退。"
> "它走过的路上，会留下**彩色的脚印**，慢慢就变成了一幅画！"
> "今天，我们就来学习怎么叫醒这只小乌龟，怎么指挥它走路！"

### 1.2 互动提问（3分钟）

- ❓ "你们见过真的小乌龟吗？它是怎么走路的？"（慢吞吞）
- ❓ "如果你们是小乌龟，我喊'往前走'，你们会怎么做？"（请学生做动作）
- ❓ "电脑里的小乌龟要走路，该用什么命令呢？"（引出本节主题）

### 1.3 学习目标预告（2分钟）

> "今天我们要学会三件事："
> 1. **念咒语**叫醒电脑里的小乌龟 —— `import turtle`
> 2. **给它起个名字** —— `t = turtle.Turtle()`
> 3. **指挥它往前走和往后退** —— `t.forward(100)` / `t.backward(100)`

---

## 二、知识点讲解（20分钟）—— 叫醒乌龟，指挥它走路

### 2.1 第一句咒语：import turtle（5分钟）

**记忆钩子：** "import = 念咒语叫醒乌龟"

| 术语 | 童趣解释 | 真实含义 |
|------|---------|---------|
| import | "念咒语" | 导入模块 |
| turtle | "小乌龟的名字" | turtle绘图库 |
| 整句 | "小乌龟快醒来！" | import turtle |

> **老师演示板书：**
> ```
> import turtle    ← 念咒语叫醒小乌龟
> ```

**GESP考点标注：【#2import导入】**

> 💡 **身体锚点：** 老师说"import"时，双手做"召唤"动作，学生跟着做。

---

### 2.2 给小乌龟起名字（5分钟）

> "乌龟醒了，但它还没有名字呢！我们叫它的时候不方便。"
> "所以我们要给它起一个名字。"

**记忆钩子：** `t = turtle.Turtle()` = "给乌龟贴名字标签"

**逐词拆解：**
- `t` = 名字（你可以用任何字母，比如 `a`、`w`、`xiao`）
- `=` = "叫做……"
- `turtle.Turtle()` = "turtle库里的小乌龟"

> **老师演示板书：**
> ```
> t = turtle.Turtle()   ← 给小乌龟起名叫"t"
> ```

**GESP考点标注：【#1程序结构】**

> 💡 **身体锚点：** 老师说"起名字"时，指指自己胸口（像贴名牌）。

---

### 2.3 让小乌龟变身（2分钟）

> "小乌龟醒了也有名字了，但看起来还是个箭头。"
> "我们可以让它变回乌龟的模样。"

```
t.shape("turtle")   ← 变出乌龟形状
```

---

### 2.4 往前走：forward（4分钟）

**记忆钩子：** `forward` = "往前走一步"

> "forward这个单词有点长，但它很好记——for(向前) + ward(方向)。"
> "括号里的数字是步数，100就是走100步。"

```
t.forward(100)   ← 小乌龟往前走100步
```

**GESP考点标注：【#3turtle移动】**

**身体锚点：** 老师说"forward"时，向前迈一步，学生跟着做。

**易错点预警：**
| 错误写法 | 正确写法 | 原因 |
|---------|---------|------|
| `t.foward(100)` | `t.forward(100)` | 漏了r |
| `forward(100)` | `t.forward(100)` | 忘了t. |
| `t.forward 100` | `t.forward(100)` | 忘了括号 |

---

### 2.5 往后退：backward（4分钟）

**记忆钩子：** `backward` = "往后退一步"

> "backward和forward是反义词。back=背/后面，ward=方向。"
> "所以backward就是往背后方向走——后退！"

```
t.backward(100)   ← 小乌龟往后退100步
```

**GESP考点标注：【#3turtle移动】**

**身体锚点：** 老师说"backward"时，向后退一步，学生跟着做。

**对比记忆：**

| 方向 | 命令 | 助记 |
|------|------|------|
| 向前 | `t.forward(数字)` | 脸朝前走 |
| 向后 | `t.backward(数字)` | 背朝前走（退） |

---

## 三、演示（10分钟）—— 打开IDLE，看乌龟动起来

### 3.1 打开IDLE（2分钟）

> **老师逐步操作，学生同步看：**
> 1. 点击桌面上的 Python 图标（或者 IDLE）
> 2. 点击菜单 File → New File（新建文件）
> 3. 屏幕出现一个空白窗口——这就是"写命令的地方"

### 3.2 逐行敲代码（5分钟）

> **老师一边敲一边讲解：**

```python
import turtle          # 第一步：念咒语，叫醒小乌龟

t = turtle.Turtle()    # 第二步：给小乌龟起名叫"t"

t.shape("turtle")      # 第三步：变出乌龟形状（不是箭头啦！）

t.forward(100)         # 第四步：往前走100步

t.backward(100)        # 第五步：往后退100步

turtle.done()          # 告诉小乌龟：好了，可以休息了
```

### 3.3 运行程序（3分钟）

> **F5 运行：**
> 1. 点击菜单 Run → Run Module（或者按键盘 F5）
> 2. 弹出一个窗口，小乌龟出现了！
> 3. 乌龟先往前走100步，再往后退100步——回到原位！

> 🎉 **全班鼓掌！** "我们成功指挥了小乌龟！"

### 3.4 关键提醒

- ✅ 每行代码都要**单独一行**
- ✅ 括号**不能丢**
- ✅ t. 不能忘（`t`是乌龟的名字）

---

## 四、实操练习（15分钟）—— 自己试试看！

### 4.1 练习一：跟着敲（5分钟）

> "打开IDLE，新建文件，跟着我刚刚做的，自己敲一遍。"

**要求：** 独立完成以下代码并运行成功。

```python
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.forward(100)
t.backward(100)
turtle.done()
```

**老师走动辅导，重点关注：**
- `forward` 拼写是否正确（有没有漏r）
- 有没有写 `t.`
- 括号有没有忘记

**GESP考点：【#1程序结构 #2import导入 #3turtle移动】**

---

### 4.2 练习二：改数字（5分钟）

> "现在我们把 `forward` 和 `backward` 括号里的数字改一改。"

**题目：** 把原本的 `100` 改成 `200`，看一看乌龟走了多远？

**预期结果：** 乌龟走了更远的路！

**挑战：** 改成 `50` 呢？再改成 `300` 呢？

> **引导提问：**
> - ❓ "数字越大，乌龟走的路越____？"（长/远）
> - ❓ "数字越小，乌龟走的路越____？"（短/近）

**GESP考点：【#3turtle移动】**

---

### 4.3 练习三：只后退不向前（5分钟）

> "如果我只想让乌龟往后退，不走前面，该怎么办？"

**题目：** 删掉 `t.forward(100)`，只保留 `t.backward(200)`，运行看看。

**预期结果：** 乌龟直接往后退200步。

> **引导提问：**
> - ❓ "为什么乌龟是从屏幕中间往后退？"（因为最开始乌龟在正中间）
> - ❓ "如果先forward(100)再backward(200)，最终在哪？"（在原位置前面100步的位置）

**GESP考点：【#3turtle移动】**

---

## 五、小测验（5分钟）—— 口答抢答

### 5.1 快问快答

| 题号 | 问题 | 答案 |
|------|------|------|
| 1 | 让小乌龟走路的命令叫什么？ | `forward()` |
| 2 | 让乌龟往后退的命令叫什么？ | `backward()` |
| 3 | 叫醒乌龟的"咒语"是什么？ | `import turtle` |
| 4 | 给乌龟起名字的命令是什么？ | `t = turtle.Turtle()` |
| 5 | forward(100)中的100是什么意思？ | 走100步 |
| 6 | 小乌龟一开始是什么形状？怎么变成乌龟？ | 箭头，用 `t.shape("turtle")` |

### 5.2 纠错挑战

> "老师写了一段代码，里面有错误，大家来找茬！"

**题目：** 下面的代码哪里错了？

```python
improt turtle
t = turtle.Turtle()
t.forward(100)
t.backword(100)
```

**错误：**
1. `improt` → 应该是 `import`（咒语念错了！）
2. `backword` → 应该是 `backward`（少了个a）

### 5.3 课堂总结（1分钟）

> "今天我们学会了："
> 1. ✅ `import turtle` —— 念咒语叫醒小乌龟
> 2. ✅ `t = turtle.Turtle()` —— 给小乌龟起名字
> 3. ✅ `t.shape("turtle")` —— 变出乌龟形状
> 4. ✅ `t.forward(数字)` —— 往前走
> 5. ✅ `t.backward(数字)` —— 往后退
>
> "大家都很棒！下次课我们学习让小乌龟左转右转，画出更多图案！"

---

## 附录：常见问题与应对

| 问题 | 应对策略 |
|------|---------|
| 学生打字慢 | 提前准备代码截图/纸质卡片，重点练3个命令 |
| 窗口一闪而过 | 检查是否漏了 `turtle.done()` |
| 乌龟不动 | 检查是否调用了 `.forward()` 方法 |
| 拼写错误 | 提前在黑板写出正确拼写，强调 `forwArd` 中有 `r` |
| 忘记t. | 重复"乌龟有名字，叫t，所以前面要写t." |
