# 第06节教案 —— 变量盒子：变量=贴标签的盒子+命名规范（60分钟·GESP #15）
> **GESP等级：一级 | 考级考点：GESP Python 一级**


> **GESP 考点**：#15 变量概念、#15 赋值语句、#15 变量命名规则
> **教学形式**：实物盒子导入（0-10min）→ 知识点讲解（10-30min）→ 上机演示（30-40min）→ 实操练习（40-55min）→ 收尾小测（55-60min）
> **时长**：60 分钟（完整一节）| **对应文件**：`01_变量盒子_演示.py`、`课后练习卡_第06节_变量盒子.md`、`课堂练习册_第06节_变量盒子.md`
> **核心定位**：变量概念地基课——每个孩子必须在身体层面建立"变量=贴标签的盒子"的肌肉记忆。

---

## GESP 知识映射

| GESP-1 考点 | 本节对应 | 身体锚点 |
|------------|---------|---------|
| #15 变量概念 | 纸盒贴标签=变量取名，盒子里放纸条=存值 | 🎁 盒子=变量，🏷️ 标签=变量名，📝 纸条=值 |
| #15 赋值语句 `=` | 把纸条塞进盒子="装东西"，换纸条=重新赋值 | 一个等号=往里装东西（不是数学的"等于"） |
| #15 变量命名规则 | 给盒子贴"1size"→判断能否贴；三根手指记三规则 | 字母/数字/下划线，不能数字开头 |
| #15 `=` vs `==` | 一个等号装东西，两个等号比大小 | ⚖️ 等号数量不同，用途不同 |

---

## 教学目标

孩子下课后能：

- **用自己的话定义变量**："贴了标签的盒子——标签是名字，里面放的是值"
- **准确解释 `=`**："一个等号是装东西进去——不是数学的等于"
- **准确解释 `==`**："两个等号是比较——问两边的值是否相等"
- **面对 `x = x + 5` 能用盒子演示**：拿出来、加一个、放回去
- **在电脑上用 `size = 100` 画正方形，改 `size = 50` 体会"改一处，全部生效"**
- **正确判断变量名合法性**（字母/数字/下划线，不能数字开头）
- **独立完成 3 道填空练习题**（变量概念、值追踪、命名判断）

---

## 教学节奏总览

| 时间段 | 时长 | 阶段 | 核心内容 | 身体锚点 | 关键记忆句 |
|--------|------|------|---------|---------|-----------|
| 0-10min | 10min | 导入：纸盒+标签 | 盒子贴标签"size"→放纸条"100"→标签=变量名,纸条=值 | 左手举盒右手贴标签 | "变量=贴标签的盒子，标签是名字，里面是值" |
| 10-30min | 20min | 知识点讲解 | ①变量=贴标签盒子②赋值=放纸条③命名规范④=赋值,==比较 | 三根手指记三规则；双手比划一个等号/两个等号 | "一个等号装东西，两个等号比大小" |
| 30-40min | 10min | 上机演示 | size=100 → t.forward(size) → 改size=50 → forward(50) | 遥控器换数字 | "改一处，全部生效！" |
| 40-55min | 15min | 实操练习 | ①填空变量概念 ②x=10;x=20;x=x+5追踪值 ③命名判断合法/非法 | 三人一组互相判答案 | "标签是名，内容是值" |
| 55-60min | 5min | 收尾小测 | "=和==有什么区别？" 全班齐答+齐读记忆钩子 | 双手比等号 | "一个等号装东西，两个等号比大小" |

> **节奏逻辑**：具象（摸盒子0-10min）→ 抽象讲解（10-30min）→ 半具象演示（30-40min）→ 抽象练习（40-55min）→ 记忆强化（55-60min）

---

## 课前准备

### 讲台道具清单
- **2 个实物纸盒**（鞋盒大小，开口向上），放在讲台中央
- **6 张标签贴纸**（8cm×3cm 卡纸，马克笔书写）：`size`、`x`、`score`、`1size`（故意写错的）、`my name`（故意写错的）、`_count`
- **若干纸条**（10cm×3cm）：`100`、`50`、`10`、`20`、`5`各一张，空白纸条 3 张备用
- **一支粗头马克笔**（演示 `x = x + 5` 时写新纸条用）

### 黑板/白板布局
- **正中顶部**：大字标题 **🎁 变量 = 贴标签的盒子**
- **左侧 1/3**：变量命名规则区（三规则 + 正反例）
- **中央 1/3**：代码区（`size=100` → `size=50` → `x=10;x=20;x=x+5`）
- **右侧 1/3**：记忆句区（两大金句逐步写出）

### 学生电脑环境
- 每台电脑已开机，桌面放置 `01_变量盒子_演示.py`
- Python/Thonny 已打开

### 其他材料
- **课堂练习纸**：每人一张（含 3 道题），课前放座位右上角
- **课后练习卡**：`课后练习卡_第06节_变量盒子.md` 打印版，下课时发放

---

## 教学流程

### 阶段一：导入——纸盒+标签（0-10min）

> **目标**：用实物建立"变量=贴标签的盒子"的身体感知

**步骤 1：拿出空盒子（1min）**
- 老师举着一个空纸盒："同学们看，这是个空盒子。里面有什么？——什么都没有。"
- 问："如果我想记住一个数字，比如 100，怎么用这个盒子来记呢？"

**步骤 2：贴标签 + 放纸条（3min）**
- 拿标签 `size` 贴在盒子上："给盒子贴个名字，叫 `size`"
- 拿纸条写 `100` 放进盒子里："好了，现在盒子 size 里装的是 100"
- 板书：**变量 `size` = `100`**
- 重复强调："标签 `size` 就是变量名，纸条 `100` 就是值。变量 = 贴了标签的盒子！"

**步骤 3：换纸条——重新赋值（3min）**
- 把纸条 `100` 拿出来，换纸条 `50` 放进去
- "现在盒子 size 里装的是 `100` 还是 `50`？——50！因为最后放进去的覆盖了之前的。"
- 板书：`size = 100` → `size = 50`
- 关键句：**"变量只记住最后一次装进去的东西"**

**步骤 4：两个盒子对比（3min）**
- 拿出第二个盒子，贴标签 `score`，放纸条 `80`
- 板书两个变量：`size = 50`、`score = 80`
- "两个盒子，两个名字，各装各的值——互不干扰"
- **记忆钩子第一次齐读**："变量=贴标签的盒子，标签是名字，里面是值"

---

### 阶段二：知识点讲解（10-30min）

> **目标**：系统讲解 4 个核心知识点

#### 知识点①：变量=贴标签的盒子（4min）

板书/投影：

```
┌──────────────────────┐
│      变量 box        │
│  ┌──────────────┐   │
│  │   标签: size   │   │
│  │              │   │
│  │   值: 100    │   │
│  │              │   │
│  └──────────────┘   │
└──────────────────────┘
```

- **变量名** = 标签（贴在盒子外面的名字）
- **值** = 盒子里面装的纸条（数据）
- 盒子可以装任何东西：数字、文字、True/False...
- 关键句：**"变量就是标签（名字）+ 值（内容）的组合"**

#### 知识点②：赋值=把纸条放进盒子（4min）

- `size = 100` 的意思是："把 100 放进名叫 size 的盒子里"
- **不是**数学课的"等于"！
- 数学课：`x = 5` 表示 x 就是 5，永恒不变
- Python 的 `=`：装东西的动作——可以随时换
- 演示：`x = 10` → `x = 20` → 盒子 x 先装 10，再装 20
- 再演示：`x = x + 5`
  - ① 拿出来（取出 x 的值）
  - ② 加一个（+ 5）
  - ③ 放回去（= 赋值）
  - 身体动作：左手伸进盒子"拿"→右手比划加 5→左手再"放"回去

#### 知识点③：变量命名规范（6min）

**三根手指记三规则**（举手比三根手指，每弯一根记一条）：

1. **大拇指**：只能用**字母、数字、下划线** → `size` ✅、`my_var` ✅、`count2` ✅
2. **食指**：**不能数字开头** → `1size` ❌、`2score` ❌
3. **中指**：**不能是 Python 关键字/不能有空格** → `if` ❌、`for` ❌、`my name` ❌

**正反例互动**（老师举标签，学生齐喊✅或❌）：

| 变量名 | 合法？ | 原因 |
|--------|:-----:|------|
| `size` | ✅ | 全字母 |
| `score_1` | ✅ | 字母+下划线+数字 |
| `2fast` | ❌ | 数字开头 |
| `my var` | ❌ | 有空格 |
| `_count` | ✅ | 下划线开头合法 |
| `class` | ❌ | Python 关键字 |
| `num2024` | ✅ | 字母开头，数字结尾 |

> 口诀：**"字母数字下划线，数字开头可不行，空格关键字别靠近"**

#### 知识点④：`=` 是赋值，`==` 是比较（6min）

**双手比划法**：
- 左手比一个横："一个等号 `=` —— **装东西！**"
- 右手比两个横："两个等号 `==` —— **比大小！**"

板书对比表：

| 符号 | 名称 | 含义 | 身体动作 |
|:----:|:----:|:----|:--------:|
| `=` | 赋值运算符 | 把右边的值装进左边的盒子 | 把纸条塞进盒子 |
| `==` | 比较运算符 | 问左右两边是否相等 | 两手掌心相对比大小 |

举例：
- `x = 5` → "把 5 装进 x"
- `x == 5` → "x 里面是 5 吗？（是/否）"

**最终对比记忆句**（全班齐读两遍）：
> **"一个等号装东西，两个等号比大小！"**

---

### 阶段三：上机演示——`size=100` 控制小乌龟（30-40min）

> **目标**：从实物盒子过渡到代码，体会"改一处全部生效"

**演示 1：变量控制边长（5min）**
- 打开 `01_变量盒子_演示.py`
- 运行代码，看到 `size=100` 画了一个大正方形
- 老师问："如果我想画小一点的，需要改什么？"
- 找到 `size = 100`，改成 `size = 50`
- 运行：正方形变小了！
- 关键句：**"改一处，全部生效！"**
- 实物盒子呼应：把 size 盒子里面的纸条从 100 换成 50

**演示 2：多个变量联动（3min）**
- 展示代码中 `t.forward(size)` → 这里的 `size` 就是盒子里的值
- "小乌龟每次往前走，都会去 size 盒子里看一眼，看里面是多少就走多少"

**演示 3：`x = x + 5` 在代码中的体现（2min）**
- 展示代码中的 `step = step + 3`
- "盒子 step 原来装 10，拿出来加 3 变成 13，再放回去——这就是 x = x + 5 的含义"

---

### 阶段四：实操练习（40-55min）

> **目标**：三道练习题，检验概念理解

**练习 1：变量概念填空（5min）**

```
在 Python 中，变量就像贴了____的盒子。
____就是贴在盒子外面的标签，____就是盒子里装的纸条。
```

答案：标签、变量名、值

**练习 2：代码值追踪（7min）**

```
x = 10      # 第①步
x = 20      # 第②步  
x = x + 5   # 第③步
print(x)    # 第④步 输出？

问：
第①步后, x = _____
第②步后, x = _____
第③步后, x = _____
第④步输出 _____
```

答案：10、20、25、25

**练习 3：变量名合法/非法判断（3min）**

| 变量名 | 合法打✅，非法打❌ | 如非法，写原因 |
|--------|:-----------------:|:-------------:|
| `age` | | |
| `1st_place` | | |
| `my_name` | | |
| `class` | | |
| `num_1` | | |
| `my var` | | |

答案：✅、❌数字开头、✅、❌关键字、✅、❌有空格

**讲评（5min）**
- 老师逐题讲解，重点纠正练习 2 的 `x = x + 5`
- 再问一次："x = x + 5 是先装 x 再算，还是先算再装 x？" → 先拿旧值算，再装新值

---

### 阶段五：收尾小测 + 记忆钩子强化（55-60min）

**小测问题**（全班举手/齐答）：

> **"=` 和 `==` 有什么区别？"**

参考答案：
- `=` 是赋值运算符——把右边的值装进左边的盒子（一个等号装东西）
- `==` 是比较运算符——判断左右两边是否相等（两个等号比大小）

**全班齐读记忆钩子（2遍）**：

1. **"变量=贴标签的盒子，标签是名字，里面是值"**
2. **"一个等号装东西，两个等号比大小"**

**布置课后练习卡**
- 发放 `课后练习卡_第06节_变量盒子.md` 打印版
- 预告下一节："下节课我们学用变量控制小乌龟画的形状——更酷！"

---

## 板书设计（终版）

```
╔═══════════════════════════════════════════════════════════╗
║          🎁 变量 = 贴标签的盒子                          ║
╠══════════════════════╦════════════════════╦═══════════════╣
║  命名规则            ║  代码             ║  记忆金句      ║
║  字母数字下划线      ║  size = 100       ║  ①变量=贴标签  ║
║  不能数字开头        ║  t.forward(size)  ║    的盒子      ║
║  不能关键字/空格     ║                   ║  ②一个等号装   ║
║                      ║  size = 50        ║    东西        ║
║   ✅ size            ║  t.forward(50)    ║  ③两个等号比   ║
║   ❌ 1size           ║                   ║    大小        ║
║   ❌ class           ║  x = 10           ║               ║
║   ❌ my var          ║  x = x + 5        ║               ║
╠══════════════════════╩════════════════════╩═══════════════╣
║  = 赋值：装东西          == 比较：比大小                  ║
╚═══════════════════════════════════════════════════════════╝
```

---

## 差异化教学

| 学生类型 | 表现 | 应对策略 |
|---------|------|---------|
| 快进型 | 3 分钟做完练习，开始分心 | 额外挑战：设计自己的变量名清单（10个合法+5个非法） |
| 慢热型 | 不理解 `x = x + 5` | 用实物盒子反复演示"拿出来→加→放回去"，至少 5 次 |
| 概念混淆型 | 把 `=` 当成数学等于 | 每次说"等于"时立刻纠正："不是等于，是装进去"——至少纠正 7 次形成肌肉记忆 |

---

## 课后反思（教师填写）

| 项目 | 评价 | 备注 |
|------|:----:|------|
| 教学目标达成度 | /5 | |
| 学生参与度 | /5 | |
| 时间把控 | /5 | |
| 需改进点 | | |
