# G1-18 课后练习 —— for循环
> **GESP等级：一级 | 考级考点：GESP Python 一级**

**姓名：__________  日期：__________**

---

| 建议用时 | 20-30分钟 |
| GESP考点 | #7 for循环基础 |

---

## 第一部分：基础巩固（3道必做题）

---

### 第1题：选词填空（for语法记忆）

**难度：** ⭐

**GESP考点：【#7 for循环基础】**

> 小明想用for循环让电脑说5次"你好"，但他忘记怎么写了。请帮他填一填！

```python
____ i ____ [1, 2, 3, 4, 5]:     ← "对于在[1,2,3,4,5]里的每一个"
    print("你好")
```

**从下面选一个填到第一个空里：**
- A. `for` ✅
- B. `while` ❌
- C. `if` ❌
- D. `def` ❌

**从下面选一个填到第二个空里：**
- A. `on` ❌
- B. `at` ❌
- C. `in` ✅
- D. `of` ❌

**答案：** `____ i ____ [1, 2, 3, 4, 5]:`

**小提示：** "for i in" 就像念咒语——"对于在……里面的每一个，轮流来！"

---

### 第2题：判断对错（缩进规则理解）

**难度：** ⭐⭐

**GESP考点：【#7 for循环基础】**

> 读下面的代码，判断对错，在括号里打✅或❌。

**代码A：**
```python
for i in [1, 2, 3]:
    print("A")     # 缩进了
print("B")          # 没缩进
```

- ❓ A会打印几次？______次
- ❓ B会打印几次？______次
- ❓ 最终输出是什么？______

**代码B：**
```python
for i in [1, 2, 3]:
print("A")          # 没缩进！
print("B")          # 也没缩进！
```

- ❓ 这段代码能运行吗？______（提示：for后面必须跟缩进的代码！）
- ❓ 如果运行，会出现什么？______（报错：IndentationError）

**代码C：**
```python
for i in [1, 2]:
    print("嗨")
```

- ❓ "嗨"会打印几次？______次

**答案速查：**
| 代码 | A打印次数 | B打印次数 | 能运行？ |
|------|----------|----------|---------|
| A | ______ | ______ | ✅ |
| B | - | - | ❌ 报错 |
| C | ______ | - | ✅ |

---

### 第3题：for循环画图（代码理解）

**难度：** ⭐⭐

**GESP考点：【#7 for循环基础】**

> 运行下面的代码，乌龟会画出什么图形？请连线。

| 代码 | 图形 |
|------|------|
| ① `for i in [1,2,3,4]: t.forward(100) t.right(90)` | A. 三角形 |
| ② `for i in [1,2,3]: t.forward(100) t.right(120)` | B. 正方形 |
| ③ `for i in [1,2,3,4,5,6]: t.forward(80) t.right(60)` | C. 五边形 |
| ④ `for i in [1,2,3,4,5]: t.forward(80) t.right(72)` | D. 六边形 |

**答案：** ①→____  ②→____  ③→____  ④→____

> 💡 **提示：** 边数 = 循环次数，每次转角 × 边数 = 360

---

## 第二部分：进阶挑战（2道选做题）

---

### 第4题：改错大挑战

**难度：** ⭐⭐⭐

**GESP考点：【#7 for循环基础】**

> 小红想画一个正方形，但代码有4个错误。请帮她找出来并改正！

```python
import turtle
t = turtle.Turtle()

for i in [1 2 3 4]
    t.forward(100)
t.right(90)

turtle.done()
```

**请圈出错误并写出正确的代码：**

| 错误编号 | 错误内容 | 正确写法 |
|---------|---------|---------|
| ① | __________ | __________ |
| ② | __________ | __________ |
| ③ | __________ | __________ |
| ④ | __________ | __________ |

> 💡 **提示：**
> - 列表里的数字要用什么隔开？
> - for 行末尾少了什么符号？
> - 第5行 `t.right(90)` 是"蹲下"（在循环里）还是"站着"（在循环外）？

---

### 第5题：创意画图——画五角星 ⭐

**难度：** ⭐⭐⭐

**GESP考点：【#7 for循环基础】**

> 你已经学会了用for循环画正方形、三角形、六边形。现在来挑战画**五角星**！
>
> 五角星有5个角，每次转144度（5×144=720，转两圈）。

**参考代码：**

```python
import turtle
t = turtle.Turtle()

for i in [1, 2, 3, 4, 5]:    # 五角星也是5次循环哦！
    t.forward(200)
    t.right(______)            # 五角星每次转多少度？

turtle.done()
```

**填空并运行，观察：**
- ❓ 五角星画出来是什么样的？____________
- ❓ 五角星和五边形长得一样吗？有什么不同？____________
- ❓ 如果把144改成别的数字，会画出什么？试试看！

> 💡 **课外小知识：** 五角星每次转144度，因为内角是36度，外角是180-36=144度。你画的是外角！

---

## 完成情况表

请家长/学生勾选完成情况：

|------|------|------|---------|---------|
| 第1题 | 选词填空 | ⭐ | ✅ / ❌ | |
| 第2题 | 判断对错 | ⭐⭐ | ✅ / ❌ | |
| 第3题 | 连线配对 | ⭐⭐ | ✅ / ❌ | |
| 第4题 | 改错挑战 | ⭐⭐⭐ | ✅ / ❌（选做） | |
| 第5题 | 创意画图 | ⭐⭐⭐ | ✅ / ❌（选做） | |

---

## 家长辅导小贴士

1. **for循环的核心是"重复"**——告诉孩子：for就是让电脑帮你做重复的事情，你只需要写一次
2. **翻卡片比喻**——如果孩子不理解for i in [1,2,3,4]，就说"从盒子里依次抽出1、2、3、4四张卡"
3. **缩进问题**——缩进是孩子最容易犯的错。用身体动作教：缩进=蹲下（在循环里面），不缩进=站着（在循环外面）
4. **如何检查代码**：
   - for那行末尾有没有冒号 `:`？
   - 循环体有没有缩进（4个空格）？
   - 列表里的数字有没有用逗号隔开？
5. **遇到报错不要慌**——把错误提示读出来，看它提示的是哪一行的问题
6. **画图规律总结**：
   - 循环几次 = 画几条边
   - 转角 = 360 ÷ 边数
   - 不管多少边形，for循环都是3行代码！


---

**自我评价：** □ 全都会了  □ 大部分会了  □ 还要再练练
