单课时教学计划 · Madeline Hunter + 5E Instructional Model

Python 列表跟字典入门

从零开始,60 分钟掌握 Python 最核心的两种数据结构
⏱ 时长 60 min
👥 学员 30 人 线下
📊 水平 初学者
🖥 环境 大屏幕 + 笔记本
01学习目标 Learning Objectives
🏗️
Objective 1

学员能独立创建列表和字典,并进行增、删、改、查四项基本操作。

🧠
Objective 2

学员能区分列表与字典的适用场景,在面对「存一批数据」vs「存对应关系」时做出正确选择。

🔁
Objective 3

学员能用 for 循环遍历列表和字典,处理批量数据并完成简单统计。

025E 时间线 · 精确到分钟
Hook
5′
Explore
10′
Explain
20′
Practice
15′
Evaluate
10′
Engage 钩子 5 min Explore 探究 10 min Explain 讲解 20 min Elaborate 练习 15 min Evaluate 测评 10 min
Engage · 钩
14:00 — 14:05
"班里有 30 个学生,成绩怎么存?"
用一个贴近生活的问题让学员意识到「数据结构」天然存在于日常需求中。
Explore · 探
14:05 — 14:15
自己动手,先撞墙再找路
在 Jupyter Notebook 里试错。不教先做——让学员自己发现索引和键的区别。
Explain · 讲
14:15 — 14:35
核心概念 + 大屏示范
列表 10′(索引/切片/增删/遍历)+ 字典 10′(键值对/访问/遍历/嵌套预览)
Elaborate · 练
14:35 — 14:50
三道动手题,逐级爬坡
L1 基础操作 → L2 列表统计 → L3 字典综合。助教巡场,即时反馈。
Evaluate · 验
14:50 — 15:00
快速小测 + 总结收口
3 道选择题(举手/Kahoot)+ 列表 vs 字典选择口诀 + Parking Lot Q&A。
03逐段详细计划
Engage 14:00 – 14:05 · 5 分钟 Hook:生活中的数据结构
讲师做什么
  • 大屏展示一个场景:「假设你是班主任,要记录全班 30 人的期末成绩。你会怎么存?」
  • 再追问:「如果不止记成绩,还要记每个人对应的成绩——张三 85、李四 92……又该怎么存?」
  • 把学员口述的方案(Excel 列 / 表格 / 编号)自然映射到「列表 = 按顺序存」「字典 = 按标签存」。
  • 不写代码,只建立直觉。
学员做什么
  • 回应讲师的提问,说出自己的存储方案。
  • 讨论「有顺序」vs「有标签」两种需求有什么不同。
检查理解:讲师问「如果我只想存分数,用哪种?如果要存『谁→多少分』,用哪种?」— 学员应能口头区分。
Explore 14:05 – 14:15 · 10 分钟 先动手,再听讲
讲师做什么
  • 课前已分发 Jupyter Notebook 文件(或 Colab 链接),包含 4 个半成品的代码单元格。
  • 任务说明(大屏展示):
    ① 创建一个列表 scores = [85, 92, 78],试试 scores[0]scores[3]
    ② 试试 scores.append(88),再看列表变了没有
    ③ 创建一个字典 grades = {"张三": 85, "李四": 92},试试 grades["张三"]grades["王五"]
    ④ 观察报错信息——为什么有的报错、有的不报?
  • 讲师在教室内走动,观察学员屏幕但不直接给答案。
学员做什么
  • 打开 Notebook,按顺序运行 4 个单元格。
  • 遇到报错时先自己读报错信息,尝试理解。
  • 和旁边同学讨论:「为什么 scores[3] 报错?」「字典的键和列表的索引好像不一样?」
检查理解:巡视时抽查 3–5 位学员屏幕,确认他们已运行全部单元格且能说出「列表用数字位置、字典用键名字」。
Explain A 14:15 – 14:25 · 10 分钟 核心讲解:列表 List
讲师讲什么
  • 创建:fruits = ["苹果", "香蕉", "橘子"] — 方括号,逗号分隔。
  • 索引访问:fruits[0] 第一个 → "苹果"fruits[-1] 最后一个 → "橘子"
  • 切片:fruits[0:2] 取前两个(左闭右开)。只讲这一个例子,不深入 step。
  • 增:append() 加末尾;insert(1, "葡萄") 插中间。
  • 删:remove("香蕉") 按值删;pop() 弹末尾;pop(0) 弹指定位置。
  • 常用:len(fruits) 查长度;"苹果" in fruits 判断是否存在。
  • 遍历:for fruit in fruits: print(fruit)
大屏示范 & 学员跟做
  • 讲师在自己的编辑器里每讲一个操作就运行一次,学员在自己的 Notebook 里同步跟敲。
  • 每 2–3 个操作后暂停 30 秒,让学员消化。
  • 强调易错点:索引从 0 开始(不是 1);切片是左闭右开
检查理解:快速提问「fruits[1] 是第几个?」如果多数人答「第 2 个」→ 继续;如果混乱 → 花 1 分钟强化索引概念。
Explain B 14:25 – 14:35 · 10 分钟 核心讲解:字典 Dict
讲师讲什么
  • 创建:student = {"姓名": "张三", "年龄": 20, "分数": 85} — 花括号,键: 值 对。
  • 访问:student["姓名"]"张三"student.get("性别", "未知") 安全访问。
  • 添加/修改:student["性别"] = "男" — 有则改,无则加。
  • 删除:del student["年龄"]student.pop("分数")
  • 常用:student.keys() / .values() / .items()
  • 遍历:for k, v in student.items(): print(k, v)
  • 列表 vs 字典对比:大屏放一张对比表 — 列表「有序、索引访问、适合同类数据」;字典「键值对、键访问、适合映射关系」。
大屏示范 & 学员跟做
  • 同样每讲一个操作就运行一次,学员同步跟敲。
  • 刻意制造一个 KeyError(访问不存在的键),引出 .get() 的必要性。
  • 展示 .items() 遍历的优雅之处——和列表的 for x in list 对比。
  • 最后 1 分钟做口头对比总结:「什么时候用列表?什么时候用字典?」
检查理解:提问「如果你要存一个班 30 人的姓名,用列表还是字典?」「如果存每个人的姓名+电话呢?」— 学员应能正确选择并说出理由。
Elaborate 14:35 – 14:50 · 15 分钟 三道练习题,逐级爬坡
练习题

🟢 L1 · 基础操作(5 分钟,全员必做)

# 1. 创建一个列表 hobbies,包含 3 个你的爱好
# 2. 用 append 再加一个爱好
# 3. 用 remove 删掉其中一个
# 4. 打印列表长度和第 1 个爱好

# 5. 创建一个字典 profile,包含「姓名」「城市」「职业」
# 6. 用 get 安全访问一个不存在的键
# 7. 用 .items() 遍历并打印所有键值对

🟡 L2 · 应用练习(6 分钟,完成 L1 后做)

# 8. 创建一个列表 scores = [78, 85, 92, 67, 88]
# 9. 用 for 循环计算总分和平均分
# 10. 找出最高分和最低分(用 max/min 或自己写逻辑)

🔴 L3 · 综合挑战(4 分钟,选做)

# 11. 创建一个字典 students,键是姓名,值是分数
students = {"张三": 85, "李四": 92, "王五": 78}
# 12. 遍历字典,打印所有分数 > 80 的学生姓名
# 13. 添加一个新学生「赵六」分数 90,再遍历一次验证
讲师 & 助教做什么
  • 巡场:讲师 + 助教(若有)走动,看学员屏幕。
  • 即时反馈:看到常见错误(如索引越界、KeyError、缩进错误)当场指出并解释。
  • 分层推进:L1 完成后举手示意 → 讲师确认后让学员进 L2。L3 不做强制要求。
  • 大屏投放:在 14:42 左右(L1 结束后),用 1 分钟大屏展示 L1 参考答案,确保掉队者跟上。
检查理解:统计 L1 举手完成人数。若 < 80% 完成 → 延长 L1 2 分钟,压缩 L3。L2 完成率 > 60% 即为达标。
Evaluate 14:50 – 15:00 · 10 分钟 快速测评 + 收口总结
测评方式

3 道快速选择题(3 分钟)— 用举手、Kahoot 或 Mentimeter:

Q1. nums = [10, 20, 30]nums[1] 的值是?
  A. 10   B. 20 ✓   C. 30   D. 报错

Q2. 以下哪个操作会报 KeyError
  A. d["a"] 当键 "a" 不存在时 ✓
  B. d.get("a") 当键 "a" 不存在时
  C. lst[0] 当列表为空时
  D. lst.append(1)

Q3. 存「学生姓名 → 手机号」应该用?
  A. 列表   B. 字典 ✓   C. 都可以   D. 都不行

收口总结(7 分钟)
  • 列表 vs 字典选择口诀(大屏展示):
    「顺序存、同类存 → 列表;对应存、查得快 → 字典」
  • 本节 3 个核心收获回顾:
    ① 列表:[] 创建、[i] 访问、append/remove
    ② 字典:{k:v} 创建、[key] 访问、.items() 遍历
    ③ 选择:顺序用列表,映射用字典
  • Parking Lot Q&A(3 分钟):
    收集课堂中学员提出的超纲问题(如「字典里的值可以再放一个列表吗?」),简要回答或预告下节课内容。
  • 预告下节(30 秒):
    「下节课我们讲列表和字典的嵌套——列表里放字典、字典里放列表,能做更复杂的事。」
04教学材料 Checklist
PPT 课件(12–15 页) 含场景引入、列表/字典语法速览、对比表、总结口诀
Jupyter Notebook 练习文件 Explore 4 单元格 + Practice 3 级练习,课前通过 U 盘/网盘分发
Colab 备用链接 防止学员本地 Python 环境未就绪
学员 Handout(A4 双面速查表) 列表/字典常用操作速查 + 选择决策树
Kahoot / Mentimeter 测评链接 3 道选择题已预设,生成二维码放 PPT 最后一页
大屏投屏方案确认 HDMI 线 / 无线投屏测试,分辨率 1920×1080 即可
讲师本地 Python 环境验证 Python 3.8+,Jupyter 已装,Notebook 已跑通一遍
学员笔记本预检清单 课前 10 分钟提醒:确认已装 Python / 或打开 Colab
05应急预案 Contingency Plan
预案 A:提前 5–10 分钟讲完
深度扩展:
① 演示字典嵌套 — 一个字典的值可以是列表或另一个字典
② 实战小挑战:「用嵌套结构存一个班的成绩,每个学生有 3 科分数,算出每个人的总分」
③ 如果时间非常充裕(提前 ≥8 分钟),开放自由 Q&A,鼓励学员分享自己工作/学习中可能用到数据结构的场景。
🔥
预案 B:时间不够,进度滞后
精准裁切:
① 优先保 Explain 核心(列表 10′ + 字典 10′ 不动)
② Practice 压缩:L3 挑战题砍掉,L2 从 6 分钟压缩到 4 分钟
③ Evaluate 压缩:3 道选择题改为 2 道口头提问,Parking Lot 放到课后微信群
④ 最差情况:L1 练习题留作课后作业,课堂上只做口头检查理解。
💡
预案 C:学员问题超纲
Parking Lot 策略:
① 白板一角标记「Parking Lot」区域,超纲问题写上
② 口头回应:「这个问题很好,涉及后面的知识点,我先记下来,课程最后统一回答」
③ 课程结束前 3 分钟逐一处理 Parking Lot 中的问题
④ 如果问题确实超出初学者范围(如时间复杂度、底层实现),坦诚说「这是进阶话题,建议课后看 Python 官方文档的 Data Model 章节」。
本页面由 办一下|banyixia.com AI 生成