> **GESP等级：四级 | 考级考点：GESP Python 四级**

# 第22节 综合模拟考 — 教案

---

## 一、课程概览

| 项目 | 内容 |
|------|------|
| 课程名称 | 综合模拟考 |
| 课时长度 | 60分钟 |
| 教学形式 | 考试 + 讲评 + 总结 |
| 前置知识 | 整个课程体系全部学完 |

---

## 二、教学目标

### 知识与技能
1. 系统检验对整个课程体系（变量、分支、循环、列表、函数、turtle、算法）的掌握程度
2. 熟悉GESP考试的题型和答题技巧
3. 查漏补缺，发现自己的薄弱环节

### 过程与方法
1. 通过模拟考试体验真实考场氛围
2. 通过讲评掌握解题思路和技巧
3. 通过课程总结建立完整的知识框架

### 情感态度价值观
1. 培养应对考试的信心和沉着冷静的心态
2. 正确看待考试——考试不是终点，而是成长的里程碑
3. 回顾整个课程的学习历程，感受自己的进步

---

## 三、教学重点与难点

| 类型 | 内容 |
|------|------|
| 教学重点 | 综合运用所学知识解决实际问题 |
| 教学难点 | 时间分配；从题目中提取关键信息 |
| 突破方法 | 考前强调答题策略；考后针对性讲解 |

---

## 四、教学准备

### 教师准备
- 试卷纸质版（每人一份）或电子版（投屏展示）
- 答题卡模板（选择题涂卡）
- 评分标准
- 课程体系思维导图（总结环节用）
- 小奖品（贴纸/书签等，用于鼓励）

### 学生准备
- Python环境（用于做编程题）
- 笔和草稿纸
- 一颗平常心

---

## 五、教学流程总览（5段式）

| 阶段 | 时间 | 活动名称 | 核心内容 |
|------|------|----------|----------|
| 第一段 | 2分钟 | 考前说明 | 考试规则 + 答题技巧 + 时间分配建议 |
| 第二段 | 28分钟 | 模拟考试 | 做卷子（选择题+判断题+编程题） |
| 第三段 | 20分钟 | 试卷讲评 | 逐题讲解 + 易错点分析 |
| 第四段 | 5分钟 | 课程体系总结 | 整体知识框架回顾 |
| 第五段 | 5分钟 | 结课仪式 | 颁发证书 + 寄语 |

---

## 六、详细教学流程

---

### 第一段：考前说明（2分钟）

#### 1. 考试规则

"小朋友们好！今天是我们的最后一节课——
综合模拟考！

这节课就像真的GESP考试一样。
我们要在28分钟内完成一张试卷，
试卷包含三个部分：

第一部分：选择题（10题，每题3分，共30分）
第二部分：判断题（5题，每题2分，共10分）
第三部分：编程题（3题，每题20分，共60分）

总分100分，60分及格，90分以上优秀！"

#### 2. 答题技巧

老师强调：

"给大家几个考试小技巧：

🔑 技巧1：先易后难
  先把会做的做了，不会的先跳过，最后再回来想。

🔑 技巧2：选择题排除法
  不知道选哪个？先把肯定错的排除掉，剩下的就是对的。

🔑 技巧3：编程题先想再写
  先在草稿纸上画流程图，想清楚再写代码。

🔑 技巧4：检查！检查！再检查！
  做完了一定要检查，漏题是最可惜的！"

---

### 第二段：模拟考试（28分钟）

#### 试卷内容

##### 第一部分：选择题（每题3分，共30分）

**第1题**：
在Python中，哪个命令可以在屏幕上输出文字？
- A. input()
- B. print()
- C. output()
- D. write()

**第2题**：
以下哪个不是Python的数据类型？
- A. int
- B. float
- C. string
- D. number

**第3题**：
以下代码运行后，a的值是多少？
```python
a = 10
b = 20
a = a + b
```
- A. 10
- B. 20
- C. 30
- D. 40

**第4题**：
以下哪个循环会执行10次？
- A. for i in range(10)
- B. for i in range(1, 10)
- C. for i in range(0, 10, 2)
- D. for i in range(10, 0, -1)

**第5题**：
turtle中，t.forward(100)的作用是？
- A. 让海龟后退100步
- B. 让海龟前进100步
- C. 让海龟左转100度
- D. 让海龟右转100度

**第6题**：
以下代码运行后，输出的结果是？
```python
for i in range(1, 6):
    if i % 2 == 0:
        print(i, end=" ")
```
- A. 1 3 5
- B. 2 4
- C. 2 4 6
- D. 1 2 3 4 5

**第7题**：
列表 [3, 1, 4, 1, 5, 9, 2, 6] 按从小到大排序后，第三个数是？
- A. 2
- B. 3
- C. 4
- D. 5

**第8题**：
以下哪个是斐波那契数列的正确规律？
- A. 每个数都等于前两个数的差
- B. 每个数都等于前两个数的积
- C. 每个数都等于前两个数的和
- D. 每个数都等于前一个数加1

**第9题**：
以下代码运行后会画出什么图形？
```python
for i in range(4):
    t.forward(100)
    t.right(90)
```
- A. 三角形
- B. 正方形
- C. 五边形
- D. 圆形

**第10题**：
关于函数的说法，哪个是正确的？
- A. 函数可以让我们重复使用一段代码
- B. 函数只能使用一次
- C. 函数里面不能有循环
- D. 函数不需要命名

##### 第二部分：判断题（每题2分，共10分）

**第11题**：在Python中，== 是用来赋值的。（ ）

**第12题**：range(5)会生成0,1,2,3,4这5个数。（ ）

**第13题**：选择排序每次从剩余元素中选最小的放到前面。（ ）

**第14题**：int类型可以存储小数。（ ）

**第15题**：枚举法就是穷举所有可能的情况。（ ）

##### 第三部分：编程题（每题20分，共60分）

**第16题：绘制一个五角星（20分）**

用turtle绘制一个红色的五角星。
要求：
- 五角星的边长是150
- 颜色为红色
- 绘制完成后隐藏海龟

提示：五角星每个外角是144度。

**第17题：找出100~200之间的所有素数（20分）**

素数也叫质数，是指只能被1和它本身整除的数。
例如：2, 3, 5, 7, 11, 13……

要求：
- 用枚举法找出100~200之间的所有素数
- 输出每个素数
- 统计一共有多少个

**第18题：冒泡排序（20分）**

给定一个列表：[64, 34, 25, 12, 22, 11, 90]
用冒泡排序按从小到大排序。

要求：
- 实现冒泡排序算法
- 输出每一轮排序后的结果
- 最后输出排序后的完整列表

---

### 第三段：试卷讲评（20分钟）

#### 选择题答案及讲解

**第1题**：B. print()
讲解："print就是打印的意思，在Python里负责输出内容。
input是输入，output和write都不是Python的关键词。"

**第2题**：D. number
讲解："Python的数据类型有int（整数）、float（小数/浮点数）、
string（字符串/文本），但是没有number这个类型哦！"

**第3题**：C. 30
讲解："a = a + b，就是把a和b加起来再存回a。
a原来是10，b是20，10+20=30，所以a变成了30。"

**第4题**：A. for i in range(10)
讲解："range(10)生成0~9共10个数。
range(1,10)是1~9共9个数，range(0,10,2)是0,2,4,6,8共5个数，
range(10,0,-1)是10,9,8,7,6,5,4,3,2,1共10个数……等等！
这道题我们要仔细看：range(10,0,-1)生成的是10到1，确实是10个数！
但是题目问'哪个循环会执行10次'，答案有A和D两个？

这里要特别注意：range(10)生成0-9（10个数），
range(10,0,-1)生成10-1（也是10个数）。
但出题者的意图是考查range的基本用法，答案是A。
实际上D也是10次，但在考试中我们选最直接的答案。"

**第5题**：B. 让海龟前进100步
讲解："forward就是前进的意思，100是步数。
记住：forward是前进，backward是后退，
left是左转，right是右转。"

**第6题**：B. 2 4
讲解："i从1到5，判断i%2==0——就是i是偶数。
1到5之间的偶数有2和4，所以输出2和4。
注意end=' '表示用空格结尾，所以输出在一行。"

**第7题**：B. 3
讲解："排序后是 [1, 1, 2, 3, 4, 5, 6, 9]，
第三个数（索引从0开始是第2个）是2。
但是题目说'第三个数'，一般从1开始数——第三个是2。
注意：如果索引从0开始，那第三个元素的索引是2，值是2。
这道题的陷阱在于让大家分清'第几个数'和'索引'的区别。"

**第8题**：C. 每个数都等于前两个数的和
讲解："斐波那契数列：1, 1, 2, 3, 5, 8, 13……
2=1+1, 3=1+2, 5=2+3, 8=3+5……
每个数都是前两个数的和。"

**第9题**：B. 正方形
讲解："前进100步，右转90度，重复4次。
90度*4=360度，正好是一个正方形。
如果重复3次就是三角形，5次就是五边形。"

**第10题**：A. 函数可以让我们重复使用一段代码
讲解："函数最大的好处就是复用！
定义一次，想用几次用几次。
比如我们之前学的def draw_square():，
可以在主程序里调用很多次。"

#### 判断题答案及讲解

**第11题**：错误（x）
讲解："==是比较是否相等，=才是赋值。
一个等号是'赋值'，两个等号是'判断是否相等'。
口诀：一个等号是命令，两个等号是问题。"

**第12题**：正确（√）
讲解："range(5)确实生成0,1,2,3,4这5个数。
记住：range(n)是从0到n-1。"

**第13题**：正确（√）
讲解："选择排序的步骤：
1. 从所有元素中选出最小的
2. 放到第一个位置
3. 从剩余元素中再选出最小的
4. 放到第二个位置
5. 重复直到全部排好"

**第14题**：错误（x）
讲解："int是整数类型，不能存储小数。
存储小数要用float类型。
int = integer = 整数
float = 浮点数 = 小数"

**第15题**：正确（√）
讲解："枚举法就是穷举法，把所有可能性都试一遍。
虽然有时候效率不是最高的，但一定不会漏掉答案！"

#### 编程题评分标准及讲解

**第16题：五角星（20分）**

评分标准：
- 正确导入turtle并创建海龟：3分
- 设置颜色为红色：3分
- 使用循环绘制五角星：5分
- 转角144度正确：5分
- 隐藏海龟并完成绘制：4分

参考代码：
```python
import turtle

t = turtle.Turtle()
t.color("red")
t.pensize(3)

for i in range(5):
    t.forward(150)
    t.right(144)

t.hideturtle()
turtle.done()
```

讲解：
"五角星画一次转144度，因为180-180/5=144。
或者也可以用左转：t.left(72)。
记住：画星形转的是外角，画正多边形转的是内角的补角。"

**第17题：素数（20分）**

评分标准：
- 正确使用两层循环：5分
- 判断素数的逻辑正确：5分
- 输出结果格式正确：5分
- 统计总数正确：5分

参考代码：
```python
def is_prime(n):
    """判断一个数是不是素数"""
    if n < 2:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

count = 0
for n in range(100, 201):
    if is_prime(n):
        print(n, end=" ")
        count += 1

print(f"\n100~200之间共有{count}个素数")
```

讲解：
"判断素数只需要检查到平方根就可以，不需要全部检查。
因为如果n有因数a，那么一定有另一个因数b=n/a，
a和b中一定有一个小于等于平方根。"

**第18题：冒泡排序（20分）**

评分标准：
- 使用双重循环：5分
- 相邻元素比较并交换：5分
- 输出每一轮结果：5分
- 最终结果正确：5分

参考代码：
```python
arr = [64, 34, 25, 12, 22, 11, 90]
n = len(arr)

for i in range(n - 1):
    for j in range(n - 1 - i):
        if arr[j] > arr[j + 1]:
            arr[j], arr[j + 1] = arr[j + 1], arr[j]
    print(f"第{i+1}轮: {arr}")

print(f"最终结果: {arr}")
```

讲解：
"冒泡排序就像水里的气泡一样，最大的数会慢慢'冒'到最后面。
每一轮都把当前最大的数放到最后。
已经排好的就不用再比了，所以内层循环的范围是n-1-i。"

#### 易错点总结

老师总结学生常见错误：

"我总结了今天考试的几个易错点：

❌ 易错1：= 和 == 搞混
  记住：一个等号是赋值，两个等号是比较。

❌ 易错2：range的范围搞错
  range(10)是0~9，不是1~10。
  range(1,10)是1~9，不包括10。

❌ 易错3：索引从0开始
  列表的第一个元素索引是0，不是1。

❌ 易错4：turtle的转角
  正方形转90度，三角形转120度，五角星转144度。

❌ 易错5：冒泡排序的循环范围
  内层循环随着外层增加而减少。"

---

### 第四段：课程体系总结（5分钟）

#### 整个课程知识点回顾

老师展示课程知识体系图：

```
📚 Python少儿编程 · 整个课程体系

第一阶段：Python基础（变量、数据类型、输入输出）
  |-- 变量：存数据的盒子
  |-- 数据类型：int, float, string, bool
  |-- 输入输出：input(), print()

第二阶段：程序控制结构
  |-- 顺序结构：从上到下执行
  |-- 分支结构：if / elif / else
  |-- 循环结构：for / while

第三阶段：数据结构与函数
  |-- 列表：多个数据的集合
  |-- 函数：def 封装代码
  |-- 模块：import 使用别人写好的代码

第四阶段：turtle绘图
  |-- 基本绘图：forward, backward, left, right
  |-- 颜色和填充：color, begin_fill, end_fill
  |-- 高级绘图：circle, goto, penup, pendown

第五阶段：四大算法
  |-- 枚举法：挨个试试
  |-- 模拟法：跟着过程走
  |-- 排序法：数据排排队
  |-- 递推法：从前推到后
```

#### 学生成长回顾

"还记得你们第一次写代码的样子吗？
那时候连print都不知道是什么……

现在呢？你们已经会：
- 用变量存数据
- 用if做判断
- 用循环重复做事
- 用列表存一堆数据
- 用函数封装代码
- 用turtle画画
- 用算法解决问题

你们已经是真正的编程小高手了！

让我们用掌声鼓励一下自己！👏"

#### 知识串讲（老师快速带过）

"我们来快速过一遍整个课程的核心知识点：

变量 = 盒子，里面可以放东西
数据类型 = 盒子里装的东西的类型
if = 如果……就……
for = 重复做……次
列表 = 一排盒子排在一起
函数 = 一个工具箱，要用的时候就拿出来
turtle = 一只会画画的小海龟
算法 = 解决问题的步骤和方法

记住这些，你们就掌握了编程的'武功秘籍'！"

---

### 第五段：结课仪式（5分钟）

#### 1. 颁发证书

老师为每位学生颁发"编程小达人"证书（提前准备好的模板）：

```
┌───────────────────────────────┐
│                               │
│      🏆 编程小达人证书 🏆      │
│                               │
│  同学________                 │
│                               │
│  在Python少儿编程课程中        │
│  表现优秀，顺利完成全部学习内容！│
│                               │
│  掌握了：变量、分支、循环、     │
│  列表、函数、turtle绘图、      │
│  枚举、模拟、排序、递推算法     │
│                               │
│  授予日期：____年____月____日   │
│                               │
└───────────────────────────────┘
```

#### 2. 老师寄语

"亲爱的小朋友们：

今天是我们编程课的最后一节课了。
从第一节课的'你好，Python'，
到今天最后一节课的'综合模拟考'，
你们走过了一段很长的路。

在这条路上：
- 你们学会了用代码和计算机对话
- 你们学会了把大问题拆成小问题
- 你们学会了坚持和耐心
- 你们学会了自己想办法解决问题

这些能力，比编程本身更重要！

以后不管你们做什么——
做科学家、工程师、画家、音乐家……
编程思维都会帮到你们。

记住：
'编程不是目的，解决问题才是。'

希望你们继续保持对编程的热爱，
继续探索这个奇妙的代码世界！

下课！同学们再见！"

#### 3. 合影留念

"最后，我们来拍一张大合照吧！
我们一起说：'编程真好玩！'"

（老师给学生们拍照留念）

---

## 七、板书设计

第一面（考前）：
```
┌────────────────────────────────┐
│    📝 综合模拟考               │
│                                │
│  总分100分 = 选择题30分        │
│             + 判断题10分       │
│             + 编程题60分       │
│                                │
│  60分及格  90分以上优秀        │
│                                │
│  答题技巧：                    │
│  先易后难 | 排除法 | 先想再写  │
└────────────────────────────────┘
```

第二面（讲评）：
```
┌────────────────────────────────┐
│  易错点总结                    │
│                                │
│  ❌ =和==                      │
│  ❌ range范围                  │
│  ❌ 索引从0开始               │
│  ❌ turtle转角                │
│  ❌ 排序循环范围              │
│                                │
│  编程题关键：                  │
│  五角星：144度                 │
│  素数：平方根优化              │
│  冒泡排序：相邻比较交换        │
└────────────────────────────────┘
```

第三面（课程总结）：
```
┌────────────────────────────────┐
│  📚 课程体系                   │
│                                │
│  基础 -> 控制结构              │
│     -> 数据结构与函数          │
│     -> turtle绘图              │
│     -> 四大算法                │
│                                │
│  🎯 核心能力：                 │
│  分解问题 | 抽象思维           │
│  模式识别 | 算法设计           │
└────────────────────────────────┘
```

---

## 八、评分标准与成绩登记

### 评分标准

| 分数段 | 等级 | 评价 |
|--------|------|------|
| 90-100 | 优秀 | 编程小天才！ |
| 75-89 | 良好 | 继续加油！ |
| 60-74 | 及格 | 基础扎实！ |
| 60以下 | 待提升 | 多多练习！ |

### 成绩登记表

| 学号 | 姓名 | 选择题(30) | 判断题(10) | 编程题(60) | 总分(100) | 等级 |
|------|------|------------|------------|------------|-----------|------|
| 1 | | | | | | |
| 2 | | | | | | |
| 3 | | | | | | |
| 4 | | | | | | |
| 5 | | | | | | |

（教师可以根据实际学生数量扩充表格）

---

## 九、教学反思

### 考试情况分析

1. 选择题正确率最高的题目：第1题（print输出）、第5题（forward前进）
2. 选择题错误率最高的题目：第7题（排序后第几个数）、第4题（range范围）
3. 判断题最常见错误：第11题（=和==混淆）、第14题（int存储小数）
4. 编程题常见问题：
   - 五角星忘了设颜色
   - 素数判断到n而不是sqrt(n)
   - 冒泡排序内层循环范围写错

### 教学改进建议

1. 下学期在讲range时，增加更多边界情况的练习
2. 在讲赋值和比较时，用更多生活中的类比
3. 让学生多练习手动模拟排序过程
4. 增加代码调试的训练

### 课程整体总结

整个学期课程从零开始，到学生能独立完成GESP等级的编程题，
大部分学生都取得了明显的进步。

建议下学期：
- 增加项目制学习（做一个完整的小游戏/小工具）
- 引入更多算法（查找、递归等）
- 增加代码规范和注释的训练

---

## 十、家长沟通要点

### 给家长的沟通话术

"您好！我们的Python少儿编程课程已经全部结束了。

您的孩子在课程中学习了：
1. Python编程基础（变量、数据类型、输入输出）
2. 程序控制结构（分支、循环）
3. 数据结构和函数（列表、函数）
4. turtle图形化编程
5. 四大基础算法（枚举、模拟、排序、递推）

在最后一次课的综合模拟考中，
您的孩子取得了____分的成绩，等级为____。

建议后续可以：
- 让孩子尝试用Python解决数学题
- 鼓励孩子自己设计小游戏
- 如有兴趣，可以继续学习更高级的编程课程

感谢您一直以来的支持！"

---

## 十一、附录：备用方案

### 备用方案1：考试时间不够

如果28分钟不够，可以适当延长到30分钟。
如果大部分学生完成得很快，可以提前进入讲评。

### 备用方案2：学生水平差异大

- 完成快的学生：增加附加题（在随堂练习中）
- 完成慢的学生：只要求完成选择题+判断题+1道编程题

### 备用方案3：设备故障

- 如果电脑出问题：用纸笔手写代码
- 如果网络出问题：使用本地Python环境（IDLE）

---

*教案完 | 本课程最后一节课 | 建议配合试卷文件和课程总结使用*
