Skip to content

列表与循环——批量处理数据的"高效工具"

课题

用循环遍历列表,计算统计量(平均分、最大值)

教学时间

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循环一句话搞定,如:
    python
    for 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]),要求:
    1. 用循环打印每个成绩;
    2. 计算总分和平均分;
    3. 找出最高分。
  • 示例框架:
    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]),要求:
    1. 计算每颗豆芽的生长增量(day4 - day3);
    2. 找出增量最大的豆芽(哪颗长得最快)。
  • 提示:用for i in range(len(day3))获取索引,同时访问两天的数据(day3[i]day4[i])。

教师支持:

  • AI数据分析师可生成"计算平均分"的代码模板,学生需补充注释说明步骤;
  • 提供"累加流程图"(初始化→循环加→计算平均),帮助理解逻辑。

四、讲解与互评:从"计算"到"意义"(10分钟)

  1. 逻辑拆解:选1份作业投屏,学生讲解"计算平均分的代码中,total变量的变化过程"(如0→90→175→270→...),强化对循环累加的理解。
  2. 数据解读:结合"植物生长增量",讨论"为什么第3颗豆芽长得最快?"(关联科学课的光照/水分因素),让数据统计服务于实际分析。
  3. 互评重点:代码逻辑是否清晰(变量名是否易懂,如max_ha更好)、统计结果是否正确,用计算器验证。

五、总结与作业(5分钟)

课堂总结:

  • for 变量 in 列表: 可循环访问每个元素,避免重复代码;
  • 累加统计:用total = 0初始化,循环中total += 元素
  • 列表长度用len(列表)获取,最大值/最小值通过循环比较获得。

课后作业:

  1. 统计家里3天的用电量(单位:度),用列表存储,计算平均用电量并打印"哪天用电最多";
  2. 预习:如果列表中有负数(如温度数据[-5, 3, -2]),怎么找最小值?尝试修改最大值代码。

教学理论支撑:

  1. 自我决定理论:通过"班级成绩""家庭用电"等真实数据任务,满足学生的"胜任感"(能解决实际问题)和"关联性"(数据与生活相关),激发内在学习动机。
  2. STEAM教育工程思维:将"统计数据"视为"工程任务",拆解为"遍历→累加→计算"步骤,培养系统分析与问题解决能力,融合数学(统计计算)、科学(数据解读)。
  3. 建构主义学习观:让学生在"手动统计→发现低效→用循环优化"的过程中,自主建构"循环批量处理数据"的认知,而非被动接受知识点。