# 智能学生选课推荐系统——课程筛选逻辑实现 教学设计

| **课题** | **智能学生选课推荐系统——课程筛选逻辑实现** |
|---------|------------------------------------------|
| **课时** | 1课时(40分钟) |
| **教学目标** | **知识目标**:掌握Python条件判断语句(if-elif-else)的语法结构与执行逻辑,理解比较运算符、逻辑运算符的使用规则,了解循环结构(for、while)的基本概念与应用场景。<br>**技能目标**:能根据选课规则设计多条件判断逻辑,能使用if语句实现选课资格验证功能,能使用for循环批量处理多个学生的选课申请,能编写完整的课程筛选脚本并输出验证结果。<br>**素养目标**:培养逻辑思维与规则建模能力,养成代码缩进规范意识,建立"程序决策自动化"的工程认知。 |
| **教学重难点** | **重点**:if-elif-else条件判断的语法与逻辑;比较运算符与逻辑运算符的组合使用;for循环的基本结构与遍历机制。<br>**难点**:多条件组合判断的逻辑设计(如"年级≥2且学分≥30");条件嵌套的层次理解;循环体内的条件判断综合应用。 |
| **教学资源准备** | 多媒体课件(含选课规则说明);决策流程图模板;代码演示环境;多条件判断逻辑示例;学生数据测试集(3-5组)。 |

## 教学过程

| 教学环节 | 教学内容 | 教师活动 | 学生活动 | 设计意图 |
|:---------|:---------|:---------|:---------|:---------|
| **1. 规则场景导入**<br>(6分钟) | 展示选课管理中的典型规则(年级限制、学分要求、重修优先),引出本课时任务:使用条件判断实现选课资格自动验证。 | **规则展示**<br>展示选课规则表:高级课程要求年级≥2且学分≥30,重修生优先选课,提问:"程序如何自动判断学生是否符合条件?"<br><br>**人工对比**<br>演示人工逐条检查规则的繁琐过程,强调自动化判断的价值。 | **规则理解**<br>阅读选课规则说明,理解各类限制条件;<br><br>**思维转换**<br>思考:如何将文字描述的规则转化为程序的判断逻辑?尝试用自然语言描述判断步骤。 | 通过真实规则场景激活学生的逻辑思维;通过人工对比突出自动化判断的效率优势,建立学习动机。 |
| **2. 条件判断语法**<br>(11分钟) | 讲解if-elif-else语句的语法结构、执行流程与缩进规范,演示比较运算符与逻辑运算符的使用。 | **语法讲解**<br>结合流程图讲解if语句的执行逻辑,强调条件表达式、冒号、缩进三要素,演示单分支、双分支、多分支结构;<br><br>**运算符演示**<br>讲解比较运算符(==、!=、>、>=)与逻辑运算符(and、or、not),演示代码:<br>```python<br>grade = 2<br>credits = 35<br>if grade >= 2 and credits >= 30:<br>    print("符合高级课程选课条件")<br>else:<br>    print("不符合条件")```<br><br>**规则映射**<br>引导学生分析:上述代码如何对应"年级≥2且学分≥30"的规则。 | **聆听理解**<br>理解if语句的判断机制,记录语法结构与缩进规范;<br><br>**跟随实践**<br>在IDE中输入演示代码,修改变量值测试不同分支的执行;<br><br>**规则转化**<br>尝试将"重修生优先"规则转化为if-else结构,与同学讨论实现方案。 | 通过流程图与代码同步讲解降低理解难度;通过实时测试让学生直观感受条件判断的动态执行;通过规则转化任务培养逻辑建模能力。 |
| **3. 资格验证实现**<br>(12分钟) | 引导学生基于上节课采集的学生信息,编写多条件判断的选课资格验证脚本。 | **任务分解**<br>将选课资格验证分解为三个子任务:①检查年级与学分,②判断是否重修生,③综合输出验证结果;<br><br>**代码框架**<br>提供代码框架,演示主体逻辑:<br>```python<br># 获取学生信息(上节课内容)<br>name = input("姓名:")<br>grade = int(input("年级:"))<br>credits = float(input("学分:"))<br>is_retake = input("是否重修?(y/n):") == "y"<br><br># 资格判断<br>if is_retake:<br>    print(f"{name}是重修生,优先选课")<br>elif grade >= 2 and credits >= 30:<br>    print(f"{name}符合高级课程选课条件")<br>else:<br>    print(f"{name}暂不符合条件")```<br><br>**任务发布**<br>要求学生完善代码,增加更多规则判断(如一年级只能选基础课)。 | **理解框架**<br>阅读代码框架,理解if-elif-else的层次逻辑与重修优先的实现方式;<br><br>**独立编码**<br>在框架基础上,添加新的条件分支,实现更复杂的规则判断;<br><br>**自测验证**<br>输入不同学生数据测试各分支逻辑,确保判断结果符合预期。 | 通过任务分解降低复杂度;通过代码框架提供脚手架支持;通过扩展任务培养举一反三能力,强化条件判断的灵活应用。 |
| **4. 批量处理引入**<br>(8分钟) | 讲解for循环的基本语法,演示如何使用循环批量验证多个学生的选课资格。 | **循环概念**<br>提问:"如果有10个学生申请选课,要运行10次程序吗?"引出循环的概念;<br><br>**语法演示**<br>演示for循环遍历列表的基本语法,代码示例:<br>```python<br>students = [<br>    {"name":"张三", "grade":2, "credits":35},<br>    {"name":"李四", "grade":1, "credits":20}<br>]<br>for stu in students:<br>    if stu["grade"] >= 2 and stu["credits"] >= 30:<br>        print(f"{stu['name']}符合条件")<br>    else:<br>        print(f"{stu['name']}不符合条件")```<br><br>**任务体验**<br>指导学生修改上述代码,添加更多学生数据进行批量验证。 | **概念理解**<br>理解循环的批量处理优势,认知for语句的遍历机制;<br><br>**代码实践**<br>输入演示代码并运行,观察循环对每个学生的处理过程;<br><br>**数据扩展**<br>在列表中添加3-5组学生数据,测试批量验证功能。 | 通过问题引入自然过渡到循环主题;通过简化的字典列表结构降低认知负担;通过批量处理体验让学生感受循环的实用价值,为下节课深入学习列表铺垫。 |
| **5. 成果展示与总结**<br>(3分钟) | 组织学生展示验证脚本,总结条件判断与循环的核心要点,预告下一模块任务。 | **作品点评**<br>邀请学生演示批量验证程序,点评逻辑严密性与代码规范性;<br><br>**知识总结**<br>总结:条件判断实现规则自动化,循环实现批量自动化,两者结合是智能系统的基础;<br><br>**任务预告**<br>下节课将使用列表存储课程信息,实现推荐课程的筛选与排序。 | **观摩学习**<br>观看同学作品,对比判断逻辑的差异;<br><br>**反思内化**<br>总结条件判断的易错点(如缩进、逻辑运算符);<br><br>**展望准备**<br>思考:如何用列表存储多门课程的信息?如何从中筛选出符合条件的课程? | 通过作品展示强化学习成就感;通过总结提炼核心知识点;通过预告保持项目学习的连贯性,为列表学习做好心理准备。 |

## 板书设计

```
选课资格验证逻辑 - 条件判断结构

┌──────────────────────────────────────┐
│ 选课规则          判断条件            │
├──────────────────────────────────────┤
│ 重修生优先        if is_retake       │
│ 高级课程资格      elif grade>=2 and  │
│                   credits>=30        │
│ 基础课程资格      elif grade>=1      │
│ 不符合条件        else               │
└──────────────────────────────────────┘

关键语法:
  if 条件:          # 条件为True执行
      代码块
  elif 条件:        # 多分支判断
      代码块
  else:            # 所有条件都不满足时执行
      代码块

批量处理:
  for 变量 in 列表:
      条件判断

本课时任务: 规则判断 + 批量验证 ✓
```

## 教学成效与反思

| | |
|:---|:---|
| **教学成效** | 结合模块开发目标评估:85%以上学生能熟练使用if-elif-else实现多条件判断,75%以上学生能编写包含逻辑运算符的复合条件,80%学生完成批量验证脚本的基本功能。通过真实选课规则驱动,学生对条件判断的应用场景理解深刻,逻辑建模能力有显著提升。循环的初步引入让学生认识到批量处理的价值,为下节课深入学习列表做好了铺垫。模块的核心功能(资格验证)已基本实现,项目推进符合预期。 |
| **教学反思** | 本课时通过"选课资格验证"这一具体业务逻辑,成功地将条件判断与循环结构融入项目实践,学习效果良好。将文字规则转化为判断逻辑的过程,有效培养了学生的计算思维。不足之处:①对于"and与or的优先级"讲解不足,部分学生在复杂条件中出现逻辑错误;②循环部分由于时间限制讲解较浅,字典的访问语法对部分学生造成困扰,影响了对循环本身的理解。改进方向:①增加逻辑运算符优先级的对比示例,建议使用括号明确逻辑关系;②将循环演示简化为普通列表(而非字典列表),降低认知负担,或将循环内容扩展为独立课时深入讲解。整体上,通过规则驱动的条件判断教学,学生的逻辑思维得到有效训练,代码实现能力进步明显。 |
