Appearance
列表与循环——批量处理数据的"高效工具"
课题
用循环遍历列表,计算统计量(平均分、最大值)
教学时间
2课时(90分钟)
课前准备
- 教师端:电脑(Python 3.10+)、投影仪、多媒体课件(含"批量处理"场景:老师统计全班成绩、超市计算日均销量)、实物道具(写有成绩的卡片若干、计算器)、数据统计表(班级模拟成绩表)。
- 学生端:电脑(Python环境)、上节课的"植物生长数据"作业、笔记本、计算器(对比手动计算与代码结果)。
- 教学素材:代码模板(循环遍历列表示例)、AI数据分析师(可生成简单统计代码)、奖励徽章("统计小能手")。
一、导入活动:从"手动统计"到"代码批量处理"(15分钟)
活动1:"统计全班成绩"大挑战——发现"循环的必要性"
- 教师展示10名学生的成绩卡片(如
[85, 92, 78, 90, 88, 76, 95, 82, 89, 91]),提问:"怎么快速算出总分和平均分?" - 分组任务:1组用计算器逐个加(手动法),2组尝试找"重复步骤"(加第一个数→加第二个数→...→除以10)。
- 对比效率:手动组耗时较长,引出"循环可以让代码重复执行同一操作,自动处理批量数据"。
活动2:"植物生长数据"回顾——关联旧知与新知
- 回顾上节课作业:学生的
day3 = [4.2, 3.8, 5.1](豆芽高度),提问:"怎么打印每颗豆芽的高度?" - 旧法:
print(day3[0]); print(day3[1]); print(day3[2])(繁琐); - 新法预告:用
for循环一句话搞定,如:pythonfor height in day3: print(height) - 类比:"就像老师点名时说'请每个同学站起来',不用逐个叫名字——循环就是对列表'每个元素'说'做这个操作'。"
二、知识点讲解:循环遍历列表与统计计算(35分钟)
模块1:for循环遍历列表——"逐个访问"元素(15分钟)
- 核心逻辑:
for 变量名 in 列表名:表示"依次把列表中的每个元素赋值给变量,执行缩进内的操作"。 - 生活类比:"就像分糖果,从盒子里(列表)拿出每一颗糖(元素),给每个同学(变量)——循环结束,每个同学都拿到了糖。"
- 基础语法(代码演示+步骤拆解):python
# 示例:遍历成绩列表,打印每个成绩 scores = [85, 92, 78] for s in scores: # s依次代表85、92、78 print("成绩:", s) # 对每个s执行打印操作 # 输出: # 成绩:85 # 成绩:92 # 成绩:78 - 互动练习:学生用自己的"家庭成员年龄列表"(如
ages = [38, 36, 12]),用循环打印"XX的年龄是XX岁"。
模块2:计算总分与平均分——循环的"累加应用"(15分钟)
- 累加逻辑:用一个变量(如
total)存储累加结果,循环中每次加上列表元素。 - 示例:计算成绩平均分:python
scores = [85, 92, 78, 90] total = 0 # 初始化总分(累加容器) for s in scores: total = total + s # 每次加一个成绩(total = 0+85 → 85+92 → ...) average = total / len(scores) # len(scores)获取列表长度(4) print("总分:", total) # 输出:345 print("平均分:", average) # 输出:86.25 - 关键函数:
len(列表名)返回列表元素个数(如len(scores)=4),避免手动数元素(尤其大数据量时)。
模块3:找最大值/最小值——循环的"比较应用"(5分钟)
- 逻辑:假设第一个元素是最大值,循环中用每个元素与之比较,更大则更新。
- 示例:找最高豆芽高度:python
heights = [4.2, 3.8, 5.1] max_h = heights[0] # 假设第一个是最大的 for h in heights: if h > max_h: # 如果当前元素更大 max_h = h # 更新最大值 print("最高高度:", max_h) # 输出:5.1
三、练习题设计:从"统计"到"分析"(25分钟)
基础任务(全员完成):"班级成绩分析器"
- 提供班级5名学生的数学成绩列表(如
math_scores = [90, 85, 95, 78, 88]),要求:- 用循环打印每个成绩;
- 计算总分和平均分;
- 找出最高分。
- 示例框架:python
math_scores = [90, 85, 95, 78, 88] # 1. 打印每个成绩 for score in math_scores: print("数学成绩:", score) # 2. 计算总分和平均分 total = 0 for s in math_scores: total += s # 等同于total = total + s average = total / len(math_scores) print("总分:", total, "平均分:", average) # 3. 找最高分(学生自主完成)
进阶任务(选做):"植物生长对比分析"
- 用两天的豆芽数据(
day3 = [4.2, 3.8, 5.1],day4 = [5.0, 4.5, 5.8]),要求:- 计算每颗豆芽的生长增量(day4 - day3);
- 找出增量最大的豆芽(哪颗长得最快)。
- 提示:用
for i in range(len(day3))获取索引,同时访问两天的数据(day3[i]和day4[i])。
教师支持:
- AI数据分析师可生成"计算平均分"的代码模板,学生需补充注释说明步骤;
- 提供"累加流程图"(初始化→循环加→计算平均),帮助理解逻辑。
四、讲解与互评:从"计算"到"意义"(10分钟)
- 逻辑拆解:选1份作业投屏,学生讲解"计算平均分的代码中,
total变量的变化过程"(如0→90→175→270→...),强化对循环累加的理解。 - 数据解读:结合"植物生长增量",讨论"为什么第3颗豆芽长得最快?"(关联科学课的光照/水分因素),让数据统计服务于实际分析。
- 互评重点:代码逻辑是否清晰(变量名是否易懂,如
max_h比a更好)、统计结果是否正确,用计算器验证。
五、总结与作业(5分钟)
课堂总结:
for 变量 in 列表:可循环访问每个元素,避免重复代码;- 累加统计:用
total = 0初始化,循环中total += 元素; - 列表长度用
len(列表)获取,最大值/最小值通过循环比较获得。
课后作业:
- 统计家里3天的用电量(单位:度),用列表存储,计算平均用电量并打印"哪天用电最多";
- 预习:如果列表中有负数(如温度数据
[-5, 3, -2]),怎么找最小值?尝试修改最大值代码。
教学理论支撑:
- 自我决定理论:通过"班级成绩""家庭用电"等真实数据任务,满足学生的"胜任感"(能解决实际问题)和"关联性"(数据与生活相关),激发内在学习动机。
- STEAM教育工程思维:将"统计数据"视为"工程任务",拆解为"遍历→累加→计算"步骤,培养系统分析与问题解决能力,融合数学(统计计算)、科学(数据解读)。
- 建构主义学习观:让学生在"手动统计→发现低效→用循环优化"的过程中,自主建构"循环批量处理数据"的认知,而非被动接受知识点。