# 第08节教案 —— 自增（+=）/ 自减（-=）：变量自己更新自己（60分钟）
> **GESP等级：一级 | 考级考点：GESP Python 一级**


> **GESP 考点**：#17 变量自更新（变量在循环中动态变化）
> **教学形式**：盒子游戏导入（0-10min）→ 知识精讲：自增+自减+螺旋（10-30min）→ 演示螺旋（30-40min）→ 上机实操（40-55min）→ 小测收尾（55-60min）
> **时长**：60 分钟 | **对应文件**：`第08节_自增自减.py`、`课堂练习册_第08节_自增自减.md`、`课后练习卡_第08节_自增自减.md`
> **核心定位**：变量自更新的核心节次。孩子必须建立"`+=` = 拿出来运算再放回去"的身体直觉。这是后续学习动画、游戏循环、累加器、计数器的基础。

---

## GESP 知识映射

| GESP-1 考点 | 本关对应 | 身体锚点 |
|------------|---------|---------|
| #17 变量自更新 | `size = size + 3` 简写为 `size += 3`；`size = size - 2` 简写为 `size -= 2` | 🎁 从盒子里拿出来→+3→放回去 |

---

## 教学目标

孩子下课后能：

- **用自己的话解释自增**：**"size += 3 = 把 size 盒子里的数字拿出来，加 3，再放回去"**
- **准确写出自增/自减简写**：`size = size + 3` → `size += 3`，`size = size - 2` → `size -= 2`
- **用 `+=` 画出螺旋**：`step = 10` → `for 30 次: forward(step); step += 3` → 螺旋越来越大
- **用 `-=` 画出收敛螺旋**：`step = 100` → `step -= 3` → 螺旋越来越小直到消失
- **用 `+=` 画变大正方形队列**：每次循环完 size += 20，下一个正方形更大
- **回答小测题**：`size += 3` 和 `size = size + 3` 一样吗？——答：完全一样，`+=` 是简写

---

## 教学节奏总览

| 时间段 | 时长 | 阶段 | 核心内容 | 身体锚点 | 关键记忆句 |
|--------|------|------|---------|---------|-----------|
| 0-10min | 10min | 导入——盒子 +3 再放回去 | `size=size+3` → "从盒子里拿出来+3再放回去"，回顾 x=x+1 三连动作 | 拿出→+3→放回去 三拍手势 | "拿出来，+3，放回去——标签没变，里面变了" |
| 10-30min | 20min | 知识点精讲 | ①自增: `size=size+3` 简写 `size+=3` ②自减: `size=size-2` 简写 `size-=2` ③螺旋:每次+3越来越大 | 盒子递增加减演示 | "自增越来越大，自减越来越小" |
| 30-40min | 10min | 演示——螺旋代码 | `step=10; for 30次: forward(step); step+=3` → 螺旋 | 全班跟随手指读代码 | "step+=3——画一步，长大一点" |
| 40-55min | 15min | 上机实操 | ①补全自增代码 ②改自减画收敛螺旋 ③用+=画变大正方形 | 上机巡视+个别指导 | "+= 简写三连：等号加号连一起" |
| 55-60min | 5min | 小测收尾 | "size+=3和size=size+3一样吗？" + 全班齐读口诀 | 口答三问 | "size+=3=从盒子里拿出来+3放回去" |

> **节奏设计逻辑**：旧知回顾（盒子三连动作）→ 新知引入（+= 简写）→ 身体操作（自增变大/自减小）→ 上机验证（三种实操）→ 小测巩固。

---

## 课前准备

### 讲台道具清单
- **2 个实物纸盒**（鞋盒大小），标签分别写 `size` 和 `step`
- **若干纸条**：`10`、`5`、`3`、`2`、`100` 各一张，空白纸条 5 张
- **一支粗头马克笔**（演示 += 时在纸条上改写数字用）
- **黑板/白板布局**：
  - 正中顶部：**🔄 变量自更新：自增 += / 自减 -=**
  - 左侧：自增区（`x = x + 3` → `x += 3`）
  - 中央：自减区（`x = x - 2` → `x -= 2`）
  - 右侧：螺旋图示范例 + 口诀区

### 学生电脑环境（课前确认）
- 每台电脑已打开 `第08节_自增自减.py`
- Python 环境正常，`turtle` 模块可用

---

## 阶段一：导入——从盒子里拿出来 +3 再放回去（0-10 分钟）

### 1.1 旧知回顾——三连动作再激活（0-3 分钟）

老师拿起 `size` 盒子（里面放纸条 `5`）：

> "还记得第 1 关学的 `x = x + 1` 吗？全班起立——三连操！"
>
> 第一拍：双手"掏"（从盒子里拿出纸条 `5`）
> 第二拍：右手画"`+3`"（在纸条上写 `+3=8`）
> 第三拍："塞"回去（把新纸条放回盒子）
>
> 齐喊："**拿出来 → +3 → 放回去！标签没变，里面变了！**"

板书大字：

```
size = 5
size = size + 3   →   拿出来，+3，放回去   →   size = 8
```

> "那 size 原来 5，现在 8——标签还是 size，里面从 5 变成了 8。这就是变量自更新——自己更新自己！"

**追问**（快速点名 2 人）：
- "现在 size 是 8。再执行一次 `size = size + 3`，size 变成多少？" → "11！"
- "再执行一次？" → "14！"
- "发现规律了吗？每次 +3，越来越大！"

### 1.2 引入 += 简写：为什么要有简写？（3-6 分钟）

> "好，现在我们要写 40 次 `size = size + 3`——每次都要写 `= size +`，手都要酸了。Python 偷了个懒——发明了简写！"

黑板擦掉原来的，写：

```
原来写法：    size = size + 3      ← 啰嗦！
简写：        size += 3           ← ！一个符号解决！
```

**拆解 `+=`**：

老师用手指着 `+=`：

> "把 `=` 和 `+` 拼在一起——`+=`。念法：**size 加等于 3**。意思呢？——**从 size 盒子里拿出来，加 3，再放回去。** 跟 `size = size + 3` 完全一样，只是少打了几个字！"

**身体锚点——`+=` 简写手势**：

> 全班起立！右手比一个 `+`，左手比一个 `=`，双手合在一起：**"加等于！"**
>
> "看到没有？`+` 和 `=` 合体了！以后看到 `+=`，就想起这个合体手势——**先加，再赋值**。"

板书并排对比：

```
size = size + 3      size += 3
    ↓                    ↓
  啰嗦版              简写版
(每次写6个字符)      (每次写3个字符)

40次循环：
啰嗦版：size = size + 3  × 40 次 = 写 240 个字符
简写版：size += 3       × 40 次 = 写 120 个字符

——省一半！这就是简写的意义！
```

**关键记忆句**（全班齐读 2 遍）：

> **"size += 3 = 从盒子里拿出来 +3 再放回去！"**

### 1.3 从自增到自减——越来越小（6-10 分钟）

老师拿起另一个盒子 `step`（里面放纸条 `100`）：

> "刚才我们学了自增——每次 +3，越来越大。那如果想越来越小呢？"
>
> 从盒子里拿出纸条 `100`："盒子 100。每次减 2，越来越小——怎么写？"

引导孩子回答 → 黑板写：

```
原来写法：    step = step - 2
简写：        step -= 2
```

> "对！`-=` 也是一样——**从盒子里拿出来，减 2，再放回去。**"

**对比板书**：

```
📈 自增（变大）：  size += 3      每次 +3 → 越来越大
📉 自减（变小）：  step -= 2      每次 -2 → 越来越小
```

> "规律简单——加号就是变大，减号就是变小！"

**身体锚点——自增自减手势**：

全班起立：
- 自增手势：双手从胸口**向上**抬（越来越大的动作）"size += 3——**越来越大！**"
- 自减手势：双手从头顶**向下**压（越来越小的动作）"step -= 2——**越来越小！**"

**关键记忆句**（齐读 3 遍）：

> **"自增 += 越来越大，自减 -= 越来越小！"**

**核对理解**（快速点名 4 人）：
- "`x += 5` 是什么意思？" → "把 x 拿出来，加 5，再放回去！"
- "`y -= 3` 是什么意思？" → "把 y 拿出来，减 3，再放回去！"
- "`score += 10` → score 会变____？" → "**大**！"
- "`speed -= 5` → speed 会变____？" → "**小**！"

---

## 阶段二：知识点精讲——自增、自减、螺旋本质（10-30 分钟）

### 2.1 自增精讲 —— size = size + 3 → size += 3（10-15 分钟）

**第一步：盒子推演 —— size 的 6 次自增（3 分钟）**

老师用实物盒子演示 `size += 3` 执行 6 次的过程：

| 次数 | 操作前 | 拿出 | +3 | 放回去 |
|:----:|:------:|:----:|:--:|:------:|
| 第1次 | size=5 | 5 | 5+3=8 | size=8 |
| 第2次 | size=8 | 8 | 8+3=11 | size=11 |
| 第3次 | size=11 | 11 | 11+3=14 | size=14 |
| 第4次 | size=14 | 14 | 14+3=17 | size=17 |
| 第5次 | size=17 | 17 | 17+3=20 | size=20 |
| 第6次 | size=20 | 20 | 20+3=23 | size=23 |

> "看到了吗？每次都是在**上一次的基础上** +3。5 → 8 → 11 → 14 → 17 → 20 → 23……像爬楼梯——一步比一步高！"

板书推演链条：

```
size = 5
size += 3  →  8     # 5 + 3
size += 3  →  11    # 8 + 3
size += 3  →  14    # 11 + 3
size += 3  →  17    # 14 + 3
size += 3  →  20    # 17 + 3
```

**关键提问**："第 10 次自增后 size 等于多少？"

引导计算：初始 5，10 次各 +3 => 5 + 10×3 = **35**

> "口算：size=5, +=3 重复 10 次 → 35！你脑子算出来了，Python 一眨眼就算完了。"

**第二步：+= 的其他写法（2 分钟）**

> "`+=` 不只能加 3——想加几加几！"

板书：

```
size += 1      # 每次 +1（最常用！计数器）
size += 5      # 每次 +5
size += 10     # 每次 +10
size += 100    # 每次 +100，飞快变大！
```

> "而且不只能加整数——还能加减法乘除！"

```
size += 3      # 自增 3
size -= 2      # 自减 2
size *= 2      # 自乘 2（翻倍！）
size /= 3      # 自除 3（缩小到 1/3）
```

> "这些以后都会学到。今天先学好 `+=` 和 `-=`——最常用的两个！"

**第三步：+= 在循环中的模式（3 分钟）**

黑板写标准结构：

```python
size = 5               # ① 先初始化（给个起点）
for i in range(40):    # ② 循环
    t.forward(size)    # ③ 用当前值做事
    t.right(61)
    size += 3           # ④ 自增（准备下一次）
```

> "四步走：① 起点 ② 循环 ③ 做事 ④ 自增。`size += 3` 在 for 循环**里面**——每次循环都执行一次，size 持续变大。"

**追问**："如果把 `size += 3` 放到 for 循环**外面**会怎样？"

> 引导回答："只执行一次——size 从 5 变成 8 就停了，后面的循环 size 一直是 8——不会越来越大了！"

**关键记忆句**（齐读 2 遍）：

> **"自增在循环里面——每次循环都 +3，越来越大！自增在循环外面——只加一次就停了！"**

### 2.2 自减精讲 —— size = size - 2 → size -= 2（15-20 分钟）

**第一步：盒子推演 —— 从 100 开始每次 -2**

> "自增是越来越大，自减就是越来越小。从 100 开始，每次 -2——100 → 98 → 96 … 越变越小。"

```
step = 100
step -= 2   →   98    # 100 - 2
step -= 2   →   96    # 98 - 2
step -= 2   →   94    # 96 - 2
step -= 2   →   92    # 94 - 2
step -= 2   →   90    # 92 - 2
```

> "但是——一直减下去，会变成负数。画图时边长变负数会怎样？"

引导："负数边长乌龟会往后走——图形往反方向画，会乱！"

**所以自减需要一个"保险"——什么时候该停？**

板书：

```python
size = 100
while size > 5:          # 保险：只要 size > 5 就继续
    t.forward(size)
    t.right(45)
    size -= 2            # 每次 -2
```

> "`while size > 5:`——当 size 大于 5 时继续画。size 减到 5 或更小时就停止——不会变成负数！"

**第二步：对比自增和自减的写法差异（2 分钟）**

| | 自增（越来越大） | 自减（越来越小） |
|:--|:--------------:|:--------------:|
| 初始值 | 小（如 5） | 大（如 100） |
| 运算符 | `+=` | `-=` |
| 结束条件 | 循环次数控制 | while 条件控制（或用 for 但保证不减到负） |
| 趋势 | 📈 越来越大 | 📉 越来越小 |
| 口诀 | 自增越来越大 | 自减越来越小 |

> "自增从小的开始，越来越大。自减从大的开始，越来越小。刚好相反！"

### 2.3 螺旋本质——每次 +3 越来越大（20-25 分钟）

> "把自增放在画图里——边长每次 +3，画出来的线越来越长——形成螺旋！"

**板书画图推演**：

```
第1圈：forward(5)     → 画很短一条线
第2圈：forward(8)     → 长了一点
第3圈：forward(11)    → 又长了一点
第4圈：forward(14)    → 再长一点
...
第40圈：forward(122)  → 超长一条线！

→ 从 5 长到 122——绕了一圈又一圈，越绕越大——这就是螺旋！
```

**实物演示——用绳子模拟螺旋**：

老师拿一根绳子（或教室里的电源线），先绕一个很小的圈，然后每次绕大一圈——孩子亲眼看到"从中心向外扩张"的过程。

> "看到了吗？每次绕得比上一圈大一点——绳子越绕越远。这就是 size += 3 在 turtle 里的效果——forward 的线越来越长，螺旋越来越大！"

**对比：如果不用自增会怎样？**

```python
# 没有自增——永远是同一个大小
step = 10
for i in range(30):
    t.forward(step)    # 永远 forward(10)——画个正多边形，不是螺旋
    t.right(30)
    # 没有 step += 3 —— 大小不变！
```

老师快速在投影上演示：`step = 10` 固定，画出来的是正十二边形（30 条边，每次转 30°，360/30=12——但转了 30 次其实在绕圈）。不加自增永不扩大——**打死不出螺旋**。

> "看到了吗？不加 `step += 3`——就永远是 size=10 的固定大小，画不出螺旋！`+=` 是螺旋的灵魂！"

**关键记忆句**（齐读 2 遍）：

> **"自增是螺旋的灵魂——没有 size += 3，就没有螺旋！"**

### 2.4 常用自增步长对比（25-30 分钟）

| 步长 | 初始=5，40次后 | 效果 |
|:----:|:------------:|:-----|
| += 1 | 5 + 39 = 44 | 缓慢放大，细腻螺旋 |
| += 3 | 5 + 117 = 122 | 标准螺旋，视觉效果最佳 |
| += 5 | 5 + 195 = 200 | 快速放大，大螺旋 |
| += 10 | 5 + 390 = 395 | 剧烈放大，几圈就到屏幕外 |

> "`+= 3` 是最常用的——不快不慢，刚好能看清螺旋又不会跑出屏幕。初学者用 `+= 3` 最合适！"

**小互动**："如果你想让螺旋更密集、更多圈——用 += 1（慢但圈数多）。如果你想让螺旋几圈就充满屏幕——用 += 10（快但圈数少）。你选哪个？"

---

## 阶段三：演示——step=10, for 30次, step+=3 螺旋（30-40 分钟）

### 3.1 全班指读代码（30-33 分钟）

打开 `第08节_自增自减.py`，投影模式 3 的代码：

```python
# 模式3：演示 — step=10, for 30次, step+=3 → 螺旋
step = 10                    # 初始步长
for i in range(30):
    t.forward(step)
    t.right(30)
    step += 3                # 每次 +3
```

**全班伸出右手食指，跟老师一起逐行指读**：

> "step = 10 —— 把 10 装进 step 盒子！"
> "for i in range(30) —— 重复 30 次！"
> "t.forward(step) —— 乌龟走 step 步！"
> "t.right(30) —— 右转 30°！"
> "step += 3 —— 从 step 盒子里拿出来，加 3，再放回去！"

**提问**："这段代码画几次螺旋？" → "30 次"
"step 从多少开始？" → "10"
"每次加多少？" → "3"
"30 次后 step 变成多少？" → "10 + 29×3 = 97"

### 3.2 推演执行过程（33-35 分钟）

老师在黑板推演前 5 次循环：

```
循环①：forward(10) → 画 10 → right(30) → step += 3 → step = 13
循环②：forward(13) → 画 13 → right(30) → step += 3 → step = 16
循环③：forward(16) → 画 16 → right(30) → step += 3 → step = 19
循环④：forward(19) → 画 19 → right(30) → step += 3 → step = 22
循环⑤：forward(22) → 画 22 → right(30) → step += 3 → step = 25
...
```

> "看到了吗？每次 forward 的步长都在变大——10, 13, 16, 19, 22, 25……30 次后 from 10 到 97——接近 10 倍！这就是螺旋的核心——**每次长大一点，一圈比一圈大**。"

**现场投影运行对比**：

1. 先运行**不加自增**的代码（注释掉 `step += 3`）→ 画一个小正多边形（固定大小）
2. 再运行**加自增**的代码 → 螺旋越来越大！

> "看到了没有？一个加了 `step += 3`——螺旋！一个没加——死板的固定大小！区别就是这三个字符：`+= 3`！"

### 3.3 变体演示：改角度看不同螺旋（35-38 分钟）

> "螺旋的关键有两个：步长（`step += 3`）和角度（`right()`）。角度不同，螺旋形状完全不同！"

**现场快速演示三个角度**：

| 角度 | 效果 |
|:----:|:-----|
| right(30) | 标准螺旋，12条边绕一圈 |
| right(61) | 更紧密的螺旋，几乎是个圆在扩张 |
| right(91) | 收敛螺旋——看起来像在向内收缩！ |

> "91° 最神奇——它看起来不像向外扩张，反而像向内收敛！其实 `step` 还是在变大——只是因为角度 > 90，乌龟每次转得太多，方向偏了，造成'向内'的错觉。"

**关键记忆句**：

> **"步长决定大小，角度决定形状——变量自增 + 角度配合 = 千变万化的螺旋！"**

### 3.4 全班 F5 运行——验证演示（38-40 分钟）

> "现在——所有人打开 `第08节_自增自减.py`，F5 运行！"

**巡视重点**：
- 文件是否打开在正确的行（模式 3）
- 看到的螺旋是否从中心向外扩张
- 是否有孩子看到了"收敛螺旋"（模式 4）并产生好奇

**快速收拢**（30 秒）：
拍手两声→"看到了吗？从中心向外——越来越大。这就是 `step += 3` 的魔力！"

---

## 阶段四：上机实操——三道题（40-55 分钟）

> "现在轮到你们亲自动手了！三关挑战——从⭐到⭐⭐⭐，难度递增。完成一关举手，我来看。"

### 实操①：补全自增代码（40-45 分钟 · ⭐）

**题目**：下面的代码不完整，请把 `____` 补全，让乌龟画出一个向外扩张的螺旋。

```python
# 实操①：补全自增代码
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.speed(8)

step = ____           # ① 初始步长——填一个小的数字（建议 5 或 10）
t.color("blue")
for i in range(35):
    t.forward(____)   # ② 走多少步？——填变量名 step
    t.right(61)
    ____              # ③ 自增！每次 +3——用 += 简写

turtle.done()
```

**答案**：
- ① `5` 或 `10`（小数字）
- ② `step`
- ③ `step += 3`

**巡视重点**：
| 检查项目 | 通过标准 |
|---------|---------|
| ① step 初始值 | 写了小数字（3~10 均可）|
| ② forward 用的是变量 | 是 `forward(step)` 不是 `forward(10)` |
| ③ 自增写对了 | `step += 3`（不是 `step =+ 3`——常见错误！）|
| 缩进 | `step += 3` 和 `forward(step)` 对齐（在 for 里面）|

**常见错误——`step =+ 3`**：

> "有些同学可能会写成 `step =+ 3`——这是错的！`=+` 是先赋值再正号，相当于 `step = 3`。正确写法是 `step += 3`——加号在等号**前面**！记住：**加等号，加在前！**"

**能力分层**：
- 完成的孩子：自由探索——改步长（+1/+5/+8）、改角度（45°/91°/121°）、改循环次数
- 未完成的孩子：一对一指导——先看初始值填了没，再检查 step += 3 的写法

### 实操②：改自减画收敛螺旋（45-50 分钟 · ⭐⭐）

**题目**：把实操①的代码改一改，画出**收敛螺旋**（越来越小，最后消失）。

```python
# 实操②：改自减画收敛螺旋
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.speed(8)

step = ____           # ① 从大数字开始（建议 80 或 100）
t.color("red")
for i in range(35):
    t.forward(____)   # ② 走多少步？——填变量名 step
    t.right(____)     # ③ 用 91°——收敛螺旋的魔法角度！
    ____              # ④ 自减！每次 -3——用 -= 简写

turtle.done()
```

**答案**：
- ① `80` 或 `100`（大数字）
- ② `step`
- ③ `91`
- ④ `step -= 3`

**引导话术**：
> "自增从小的开始变大。自减反过来——从大的开始变小。把 `+= 3` 改成 `-= 3`，初始值改成 80 或 100，角度改成 91°——看看效果！"

**关键对比**：
```
自增螺旋：step=5，step+=3，right(61)  → 向外扩张 ↗
自减螺旋：step=80，step-=3，right(91) → 向内收敛 ↘
```

> "自增螺旋像爆炸——从中心向外炸开。自减螺旋像漩涡——从外面向里收缩。完全相反的效果——但代码只改了一两个字符！"

**巡视重点**：
| 检查项目 | 通过标准 |
|---------|---------|
| 初始值是否足够大 | 80 或以上（太小的话还没到边界就没了）|
| 自减写法 | `step -= 3`（不是 `step =- 3`）|
| 角度 91° | 91° 是收敛螺旋的魔法角度 |
| 看到收敛效果 | 从外向内收缩，越来越小直到看不见 |

**能力分层**：
- 完成的孩子：挑战把自减改成 `while` 循环——`while step > 5:`
- 想进一步探索："试试角度 121° 或 179°——完全不同的图案！"

### 实操③：用 += 画变大正方形（50-55 分钟 · ⭐⭐⭐）

**题目**：用 `+=` 画 6 个越来越大的正方形，排成一排。

```python
# 实操③：用 += 画变大正方形
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.speed(6)

size = ____           # ① 起始边长——填 20
t.color("green")
for i in range(6):    # 画 6 个正方形
    for j in range(4):      # 画一个正方形（4 条边）
        t.forward(____)     # ② 走多少？——填变量名 size
        t.right(____)       # ③ 转多少度？——正方形转几度？
    # 准备画下一个正方形
    t.penup()
    t.forward(____)    # ④ 移到下一个位置——填 size + 10（留间距）
    t.pendown()
    ____               # ⑤ 自增！每次 +20——用 += 简写

turtle.done()
```

**答案**：
- ① `20`
- ② `size`
- ③ `90`
- ④ `size + 10`
- ⑤ `size += 20`

**引导话术**：
> "前面两个挑战都是画螺旋——用 forward 一次只画一条边。现在是完整画正方形——每个正方形 4 条边，然后边长 +20，画下一个更大的正方形。正方形队列来了！"

**推演**：

```
size = 20
第1个正方形：边长 20
第2个正方形：边长 40  (20 += 20)
第3个正方形：边长 60  (40 += 20)
第4个正方形：边长 80  (60 += 20)
第5个正方形：边长 100 (80 += 20)
第6个正方形：边长 120 (100 += 20)
```

> "看到了吗？20 → 40 → 60 → 80 → 100 → 120——像排队一样，一个比一个大！"

**巡视重点**：
| 检查项目 | 通过标准 |
|---------|---------|
| ⑤ `size += 20` | 在外层 for 里面、内层 for **外面**（画完整个正方形才变大）|
| ④ 移动距离 | `size + 10`（间距随正方形变大而变大，更协调）|
| 内层循环 | `range(4)`——正方形 4 条边 |
| 正方形方向 | `right(90)`——直角转弯 |
| 最终效果 | 6 个正方形从左到右，越来越大 |

**常见 bug——`size += 20` 写在内层 for 里**：

> "很多同学会把 `size += 20` 写在内层 for 里面——结果每画一条边就变大一次，正方形变成了梯形！四个边不一样长，歪了！记住：**画完整个正方形再变大——`size += 20` 在外层 for 里面、内层 for 外面。**"

**能力分层**：
- 完成的孩子：改 `size += 20` 为不同的值（+10 渐变细腻 / +50 跳跃巨大）
- 加彩色：`colors = ["red","orange","green","blue","purple","pink"]` + `t.color(colors[i])`
- 挑战：画圆形队列——`t.circle(size)` 替代正方形，`size += 15`

---

## 阶段五：小测 + 收尾（55-60 分钟）

### 5.1 小测：size+=3 和 size=size+3 一样吗？（55-57 分钟）

**投影问题**：

```
┌─────────────────────────────────────────┐
│           📝 小测（全班口答）              │
│                                          │
│ size += 3  和  size = size + 3           │
│                                          │
│ ① 它们一样吗？  A. 一样  B. 不一样       │
│ ② 如果一样，为什么要有两种写法？          │
│ ③ 如果 size=10，执行 size+=3 后 size=？  │
└─────────────────────────────────────────┘
```

**答案**：
- ① **A. 一样！** ✅ `+=` 是 `= +` 的简写
- ② **简写省事！** 少打几个字符，代码更简洁。40 次循环能省一半字符
- ③ **13**（10+3=13）

**追问**（能力排查）：
- "`score -= 5` 等价于什么？" → "`score = score - 5`"
- "`x *= 2` 等价于什么？" → "`x = x * 2`"（如果有孩子答得出来，表扬！还没学但能推理）
- "自增自减的核心口诀是什么？" → "**拿出来，加减，放回去！**"

**易错点确认**：
> "注意！`size += 3` 中间没有空格也可以——`size+=3`。但是不能写成 `size =+ 3`——那是先赋值再取正，等价于 `size = 3`，不是自增！"

板书：

```
✅ 正确：size += 3     size = size + 3
❌ 错误：size =+ 3     step + = 3
```

### 5.2 全班齐读——核心金句（57-59 分钟）

全体起立，老师领读一句，全班跟读一句（拍手打节奏）：

```
① size += 3 = 从盒子里拿出来 +3 再放回去！
② 自增 += 越来越大，自减 -= 越来越小！
③ 自增在循环里面——每次循环都变大！
④ 自减从大开始，自增从小开始！
⑤ 自增是螺旋的灵魂——没有 += 就没有螺旋！
⑥ 加等号，加在前——+= 不是 =+！
```

**灵魂收尾三问**：

> **一问**："`size += 3` 和 `size = size + 3` 一样吗？" → "**完全一样！`+=` 是简写！**"
>
> **二问**："自增和自减的区别是什么？" → "**自增越来越大（📈），自减越来越小（📉）**"
>
> **三问**（快速点名 3 人，每人 3 秒内答对即过关）：
> - "`+=` 什么意思？" → "拿出来，加，放回去！"
> - "`step -= 5` → step 变？" → "**变小！**"
> - "螺旋用自增还是自减？" → "**自增！**"

**过渡下一关**（59-60 分钟）：

> "今天你们学会了变量自己更新自己——`size += 3` 让螺旋越来越大，`step -= 2` 让图形越来越小。变量不再是一次定死——它会动！"
>
> "下一关——我们学 `while` 循环。`for` 是我们告诉 Python 走几步，`while` 是 '只要条件成立就一直走'。"加上自增自减→无限螺旋！而且让你亲手控制什么时候停。下课！"

**最后检查**：每人保存了代码 ✓ / 关掉了电脑 ✓

---

## 板书设计

```
┌──────────────────────────────────────────────────────────────┐
│        🔄 第08节：自增 += / 自减 -=                           │
│             变量自己更新自己                                  │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│  ┌─ 自增（越来越大）──────┐  ┌─ 自减（越来越小）──────┐     │
│  │ size = size + 3        │  │ step = step - 2        │     │
│  │ ↓ 简写                  │  │ ↓ 简写                  │     │
│  │ size += 3              │  │ step -= 2              │     │
│  │                        │  │                        │     │
│  │ 从小的开始 ↗ 变大      │  │ 从大的开始 ↘ 变小      │     │
│  └────────────────────────┘  └────────────────────────┘     │
│                                                              │
│  ┌─ 螺旋公式 ───────────────────────────────────────┐       │
│  │ step=5 → step+=3 → right(61) → 向外扩张螺旋 ↗   │       │
│  │ step=80 → step-=3 → right(91) → 向内收敛螺旋 ↘  │       │
│  │                                                   │       │
│  │ ★ 步长决定大小，角度决定形状！                     │       │
│  └────────────────────────────────────────────────────┘       │
│                                                              │
│  ┌─ 实操三部曲 ───────────────────────────────────────┐       │
│  │ ⭐  ① 补全自增代码  → 向外螺旋                     │       │
│  │ ⭐⭐ ② 改自减收敛螺旋 → 向内收缩                    │       │
│  │ ⭐⭐⭐③ += 画变大正方形 → 排队越来越大               │       │
│  └────────────────────────────────────────────────────┘       │
│                                                              │
│  ┌─ 核心口诀 ───────────────────────────────────────────┐    │
│  │ ① +=  = 从盒子里拿出来+3再放回去                     │    │
│  │ ② 自增越来越大，自减越来越小                         │    │
│  │ ③ += 在循环里面才一直变大——在外面就只变一次         │    │
│  │ ④ 加等号，加在前——+= 不是 =+                        │    │
│  │ ⑤ 步长决定大小，角度决定形状                        │    │
│  └────────────────────────────────────────────────────┘    │
│                                                              │
│  📝 小测：size+=3 和 size=size+3 一样吗？ → ✅ 一样！简写！ │
│                                                              │
│  记忆钩子："size+=3=从盒子里拿出来+3放回去"                   │
│            "自增越来越大,自减越来越小"                         │
└──────────────────────────────────────────────────────────────┘
```

---

## 易错点

| 易错点 | 错误表现 | 根因 | 课堂对策 |
|--------|---------|------|---------|
| `size =+ 3` 写成 `size =+ 3` | 自增不生效，size 永远等于 3 | 把 `=+` 当成 `+=`，混淆了顺序 | 口诀："加等号，加在前！" 板书对比：`size += 3` ✅ / `size =+ 3` ❌ |
| `step += 3` 写在 for 循环外面 | 图形不会越来越大，只画了一次自增 | 不理解"每次循环都要更新" | 对比演示：写在里 vs 外的效果差异。口诀："自增在循环里面——每次循环都变大！" |
| `size += 20` 写在内层 for 里（画正方形时） | 正方形四个边不一样长，变成梯形 | 不理解内外层循环的层级 | "每画完一个完整的正方形才变大一次——`size += 20` 在外层 for 里面、内层 for 外面" |
| 自减没有停止条件 | 边长变成负数，乌龟倒着走，图形乱掉 | 没考虑"减到什么时候停" | "用 while 加条件——`while size > 5:`——或者确保循环次数够用不会减到负数" |
| `forward(step)` 写成 `forward(10)`（写死数字） | 不会变大——forward 永远走 10 | 没有用变量名，用了写死的数字 | "要让它变——用变量！变量名 step 会变，写死的 10 永远不会变。" |
| 自增初始值太大 | 螺旋一开始就很大，看不到从小到大的过程 | 初始值没设对小数字 | "初始值要小——从 3 或 5 开始，螺旋从中心向外扩张才明显" |
| 忘记 `for i in range(___):` 里的循环次数 | 少画了或多画了，效果不对 | 没算好循环次数对最终大小的影响 | 推演：初始 5，+=3，40 次后=5+39×3=122。次数太少螺旋不够大，太多跑出屏幕 |
| 自减收敛螺旋角度没用 91° | 效果不像收敛，还是向外扩张 | 不知道 91° 的魔法效果 | "91° 是收敛螺旋的魔法角度——刚好让乌龟偏转方向，造成向内收缩的错觉" |

---

## GESP 衔接

本关完整覆盖 GESP 一级考点 **#17 变量自更新**，通过"自增 +=（变大）→ 自减 -=（变小）→ 螺旋应用 → 正方形队列"逐层递进，孩子经历了从"看代码"到"补全代码"再到"独立改写"的三级认知跃迁。

**本关结束后孩子应能回答**：

1. `size += 3` 和 `size = size + 3` 一样吗？（答：完全一样，`+=` 是简写）
2. 自增和自减的区别是什么？（答：自增 += 越来越大，自减 -= 越来越小）
3. 螺旋的代码结构是什么？（答：`step=初始值; for 循环: forward(step); right(角度); step+=步长`）
4. 为什么 `+=` 必须写在循环里面？（答：写在里面每次循环都更新一次，越来越大；写在外面只更新一次就停了）
5. 自减如果一直减下去会怎样？（答：变成负数——乌龟倒着走，图形会乱。要用 while 条件控制停止）

**下一节预告**：`while` 循环——"只要条件成立就一直做"。把 `while step > 5:` 和 `step -= 2` 结合，画出自控收敛螺旋。

---

## 教员备忘

- **本关最关键 10 分钟**：0-10 分钟的导入——"从盒子里拿出来+3再放回去"的身体锚点。这个三拍手势如果做扎实了，后面所有自增自减的理解都会很顺畅。务必全班起立做三遍。
- **最易混淆点**：`size =+ 3`（错误）vs `size += 3`（正确）。前 3 个班级中可能有 70% 的孩子在第一遍写时犯这个错。策略：还没犯之前先预警，犯了的现场纠正，全班齐读"加等号，加在前"三遍。
- **三层实操的时间分配**：实操①（5 分钟）- 实操②（5 分钟）- 实操③（5 分钟）。如果时间紧张，实操③可以降低要求——不要求间距 `size+10`，只要求画出 6 个变大正方形即可。
- **能力分层**：完成全部三关的孩子进入"自由探索"——改参数、加颜色、加 `t.circle()`。未完成实操③的孩子可以课后继续或下一节课再补。
- **投影准备**：提前在投影上打开 `第08节_自增自减.py`，模式 3（螺旋）和模式 5（变大正方形）预先框选好。
- **小测是快速口答**：不需要写下来。全班齐答→老师听答案→如果出现分歧（有人选 B 不一样）→立刻展开讨论，现场演示验证。

---

## 文件清单

```
04_小乌龟的记忆变量/第08节_自增自减/
├── 第08节_自增自减.py              ← 核心上机文件（本关）
├── 教案_第08节_自增自减.md          ← 本文件
├── 课堂练习册_第08节_自增自减.md    ← 课堂练习
├── 课后练习卡_第08节_自增自减.md    ← 课后作业
└── （后续节次文件...）
```
