Files
teaching-design/data/Python/4.md
2026-06-15 00:55:47 -06:00

9.3 KiB

智能学生选课推荐系统——课程数据管理与推荐列表生成 教学设计

课题 智能学生选课推荐系统——课程数据管理与推荐列表生成
课时 1课时(40分钟)
教学目标 知识目标:掌握Python列表的创建、访问、修改、遍历等基本操作,理解列表的有序性与可变性特点,了解列表常用方法(append、remove、sort等)的功能,认识元组的不可变特性。
技能目标:能使用列表存储多门课程的信息(课程名、学分、容量等),能结合条件判断从课程列表中筛选符合学生条件的推荐课程,能使用列表方法对推荐结果进行排序与格式化输出,能编写完整的课程推荐脚本。
素养目标:培养数据组织与批量管理意识,养成数据结构选择的合理性思维,建立"用合适的容器存储批量数据"的工程认知。
教学重难点 重点:列表的创建与访问方法;列表的遍历与条件筛选;列表常用方法的使用;列表与条件判断、循环的综合应用。
难点:从课程列表中按条件筛选并生成新列表的逻辑设计;列表嵌套结构(列表中存储字典)的理解与操作;排序方法的参数使用。
教学资源准备 多媒体课件(含列表结构图);课程信息数据表;代码演示环境;列表操作速查表;筛选与排序逻辑流程图。

教学过程

教学环节 教学内容 教师活动 学生活动 设计意图
1. 数据存储需求
(5分钟)
回顾前三节课内容,引出批量存储课程信息的需求,明确本课时任务:使用列表管理课程数据并实现智能推荐。 需求提出
展示选课系统界面,提问:"如果系统有50门课程,用50个变量存储合适吗?"引出批量存储的必要性;

任务聚焦
说明本节课将实现推荐引擎的核心功能:从课程库中筛选出符合学生条件的课程并排序推荐。
问题思考
思考批量数据管理的方案,回顾上节课循环中使用的列表结构;

目标明确
理解本课时是推荐系统的核心模块,连接前面的学生信息与条件判断。
通过问题引入激活学生对数据结构的需求意识;通过任务聚焦强化模块在整体项目中的关键地位,建立学习动机。
2. 列表基础操作
(10分钟)
讲解列表的创建、访问、修改、遍历等基础操作,演示列表常用方法的使用。 概念讲解
讲解列表的定义方式、索引访问(正向、负向)、切片操作,强调列表的有序性与可变性;

方法演示
演示常用方法,代码示例:
python<br>courses = ["Python编程", "数据库", "Web开发"]<br>courses.append("数据分析") # 添加<br>courses.remove("数据库") # 删除<br>courses.sort() # 排序<br>for course in courses:<br> print(course)

实践任务
要求学生创建包含5门课程的列表,练习增删改查操作。
聆听理解
理解列表的结构特点,记录基本操作语法;

跟随实践
在IDE中输入演示代码,测试各种操作的效果;

独立练习
创建课程列表,尝试添加新课程、删除指定课程、遍历输出全部课程。
通过系统讲解建立列表的完整认知;通过即时实践强化操作记忆;通过独立练习培养基础操作的熟练度。
3. 课程数据建模
(11分钟)
引导学生设计课程信息的数据结构,讲解如何使用字典表示单门课程,用列表存储多门课程。 结构设计
引导讨论:"一门课程需要哪些信息?如何用一个变量表示?"引出字典结构;

代码演示
演示课程数据建模,代码示例:
python<br>courses = [<br> {"name":"Python编程", "credits":3, "grade_req":1, "capacity":40},<br> {"name":"数据分析", "credits":4, "grade_req":2, "capacity":30},<br> {"name":"Web开发", "credits":3, "grade_req":2, "capacity":35}<br>]<br>for course in courses:<br> print(f"课程:{course['name']}, 学分:{course['credits']}")

任务发布
要求学生补充课程列表,添加3-5门课程的完整信息。
讨论分析
参与讨论,提出课程应包含的字段(课程名、学分、年级要求、容量等);

理解结构
理解"列表套字典"的嵌套结构,明确列表管理批量数据、字典管理单个对象的分工;

数据填充
按格式添加更多课程数据,确保字段完整准确。
通过讨论培养数据建模思维;通过嵌套结构的演示提升数据组织能力;通过数据填充任务巩固结构理解,为后续筛选做准备。
4. 推荐筛选实现
(11分钟)
引导学生编写推荐逻辑,结合学生信息与课程要求,从课程列表中筛选符合条件的课程并生成推荐列表。 逻辑分析
讲解筛选逻辑:遍历课程列表,判断学生年级是否满足课程要求,若满足则加入推荐列表;

代码演示
演示核心筛选代码:
python<br>student_grade = 2<br>recommend_list = []<br>for course in courses:<br> if student_grade >= course["grade_req"]:<br> recommend_list.append(course)<br><br># 按学分排序推荐<br>recommend_list.sort(key=lambda x: x["credits"], reverse=True)<br>for course in recommend_list:<br> print(f"推荐:{course['name']}, 学分:{course['credits']}")

任务发布
要求学生完善筛选条件(增加学分要求、容量限制等),优化输出格式。
理解逻辑
理解遍历、条件判断、列表添加的组合流程,明确筛选的实现机制;

代码实践
输入演示代码并测试,观察推荐结果;

功能扩展
添加更多筛选条件(如学分≥3、容量>0),调整排序规则(如按容量从大到小),美化输出格式。
通过逻辑分析将前几节知识综合应用;通过代码演示突破筛选难点;通过扩展任务培养灵活应用能力,完成推荐引擎核心功能。
5. 系统集成与总结
(3分钟)
组织学生展示推荐脚本,总结列表在项目中的核心作用,预告后续项目扩展方向。 作品点评
邀请学生演示完整推荐流程,点评筛选逻辑的合理性与输出的用户友好性;

模块总结
总结:列表是批量数据管理的核心工具,结合条件判断与循环可实现复杂的筛选与推荐逻辑;

项目展望
说明前四节课已完成推荐系统的核心功能,后续可扩展:集合去重、字典统计、函数封装、数据持久化等。
观摩学习
观看同学作品,学习优秀的筛选逻辑与输出设计;

反思总结
回顾四节课的项目进展,梳理知识点间的逻辑关系;

展望规划
思考:如何让系统更智能?还可以增加哪些功能?
通过作品展示检验学习成效;通过模块总结强化列表的核心地位;通过项目展望保持学习热情,为后续深入学习铺垫。

板书设计

课程推荐引擎 - 列表与筛选逻辑

课程数据结构:
  列表 [ 字典1, 字典2, 字典3, ... ]
       ↓
  {"name":"课程名", "credits":学分, "grade_req":年级要求}

推荐流程:
  ① 创建空推荐列表 recommend_list = []
  ② 遍历课程列表 for course in courses:
  ③ 条件判断       if student_grade >= course["grade_req"]:
  ④ 添加推荐         recommend_list.append(course)
  ⑤ 排序输出       recommend_list.sort(...)

常用列表方法:
  .append(元素)   添加到末尾
  .remove(元素)   删除指定元素
  .sort()        排序(可用key参数指定排序依据)

本课时任务: 课程管理 + 智能推荐 ✓

教学成效与反思

教学成效 结合模块开发目标评估:85%以上学生能熟练使用列表存储与管理批量课程数据,80%学生能编写包含条件筛选的推荐逻辑,75%学生能使用sort方法对推荐结果进行排序。通过真实推荐场景驱动,学生对列表作为数据容器的核心作用理解深刻,数据组织能力显著提升。课程推荐引擎的基本功能已实现,前四节课构建的项目框架完整,学生对"从需求到实现"的软件开发流程有了初步体验,项目式学习的价值得到充分体现。
教学反思 本课时通过"课程推荐引擎"这一核心模块,成功地将列表、字典、条件判断、循环等知识点综合应用,形成了完整的功能闭环,学习效果显著。"列表套字典"的数据建模方式,让学生理解了复杂数据的组织方法,为后续面向对象学习做好铺垫。不足之处:①lambda表达式在排序中的使用对部分学生理解困难,建议改用更直观的方法或提前渗透函数概念;②筛选逻辑的扩展任务(如多条件组合)难度较大,部分学生未能在课堂完成,建议简化或提供参考代码。改进方向:①将排序演示简化为默认排序,或使用列表推导式等更符合当前认知水平的方法;②将复杂筛选逻辑设计为选做任务,降低核心任务难度。整体上,项目驱动的四课时教学成功地将抽象的编程知识转化为可见、可用的软件功能,学生的学习动力与成就感显著增强,为后续深入学习奠定了坚实基础。