课程标准 和 教学目标 |
分支结构的Python实现——if…elif…else语句(2课时) |
||||
教材内容:2.2.3分支结构的Python实现( if…elif…else语句) |
|||||
单元活动项目:我的时间规划小助手 |
|||||
课程标准要求: 1.7掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。通过解决实际问题,体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法。 |
|||||
学业要求: 依据解决问题的需要,设计和表示简单的算法,掌握一种程序设计语言的基本知识,利用程序设计语言实现简单算法,解决实际问题。 |
|||||
教学内容分析: 本课教学内容来源于必修模块1《数据与计算》中的第二章第二节,要求学生通过对实际问题的需求分析,学会抽象与建模,进而设计算法,最后能够编写程序解决问题。 |
|||||
学情分析: 在本课之前,学生已经学习了算法的基本理论概念、顺序结构和分支结构、Python的基础语法,学习了turtle库的一些基础命令,能够(在有参考的情况下)使用Python程序设计语言编写简单的程序,实现顺序结构算法。 由于学生使用编程解决问题的过程中分析问题的能力比较弱,习惯性上手先编程,需要注意先帮助学生梳理算法流程,养成好习惯,再进行编程。 |
|||||
教学目标: l 掌握if,if…else和if…elif…else语句的格式。 l 掌握分支结构的执行过程。 l 学会利用if…elif…else语句编写分支结构的程序。 l 学会按照问题需求,抽象问题的本质,建立问题模型,设计相应算法,编写Python语言的程序,从而掌握编写程序的过程与方法。 |
指向的核心素养: l 计算思维:能够采用计算机领域的学科方法界定问题、抽象特征、建立结构模型;通过对实际问题进行判断与分析,运用合理的算法形成解决问题的方案。 l 数字化学习与创新:针对特定学习任务,利用数字化学习资源,完成任务。 |
||||
教学重难点: 重点:分支结构的语句格式、执行过程和实现; 难点:使用if…elif…else语句解决问题。 |
|||||
教学环境:网络机房,数字化学习资源。 |
|||||
教学策略分析: 以生活情境作为引入,拆分单元活动项目,(在整个单元内)逐步解决问题,进行模块化编程。 通过课堂实践气象预警发布,学习Python分支语句的用法。 模仿课堂实践,解决本节课的单元活动问题,巩固分支结构的Python实现。 学有余力的学生可以利用已学知识及数字化学习资源对程序进行修改和扩展。(例如:利用turtle库做一个红绿灯提示/利用列表做多学科输入等……)
|
|||||
教学活动设计 |
教学环节 |
教师活动 |
学生活动 |
设计意图 |
|
情境导入:你是拖延症患者吗? |
情景描述: 由近期比较热的一个话题讨论拖延症的问题,学生自测是否有拖延现象。因为对美好生活的向往,我们需要改善自己的拖延现象,治疗拖延症。 治疗拖延症的主要手段是做时间规划,但是如何合理规划时间是需要基于数据分析的。 |
通过当前大家都面临的拖延症问题展开项目活动,尝试为拖延症做一些挽救措施,缓解焦虑。 |
|||
项目活动一:我的作业规划 |
展示时间规划助手的完整程序。 介绍程序作用,可以输入需要完成的学科作业及时长,统计一周作业完成情况,并做出一些时间安排建议。 |
分析需求,拆分算法到单科时间规划。 完成活动单的抽象建模填充: 输入:学科、计划时间 输出:花费时间,是否超时 计算模型: 花费时间=结束时间-开始时间 花费时间>计划时间 T 输出“超时” F 输出“没超时” |
潜移默化传递模块化程序设计思想。 强化在设计算法和编程前先进行问题分析的思维习惯。 |
||
抽象与建模 |
将程序拆分到最基本的单元——输入作业和预计完成作业时间,判断是否完成目标。 |
||||
请分析问题的要求,完成抽象建模。 |
|||||
设计算法 |
根据建模设计算法。 |
补充流程图。 |
|
||
编写程序 (输入输出) |
根据已学知识,完成输入和输出部分的程序设计。 简单讲评,注意标点符号为英文半角符号,input函数默认输入为字符串类型。 |
根据已学知识,完成输入和输出部分的打码编写。 |
复习输入输出函数的应用。 |
||
分支结构一: 单分支结构 |
根据分支结构流程图讲解if语句的格式和执行过程。 |
留下代码和流程图是可以一一对应的印象。 |
|||
根据霜冻预警信号的发布条件(温度)判断是否要发布预警。 |
尝试分析建模。 |
气象预警比较贴合学生日常,地理学科也会涉及相关知识。 利用气象预警进行程序设计能逐步拆解完成分支结构的推进。 反复强调几个关键点: 冒号 空格 对齐 input()函数输入的是字符型 |
|||
根据流程图,编写代码。 注意if语句的结构,条件表达式后有一个英文的冒号,回车后要进行缩进,一般用四个空格,或者直接使用tab键。 |
跟写代码,尝试运行调试。
|
||||
展示错误代码,分析问题并提出修改方法。 t=input(“地面温度:”) if t<0 print(“霜冻预警”) |
1、input()输入的是字符型,要改成float(input()) 2、if t<0后面漏了冒号,要英文的 3、print()要往后缩进4位 |
||||
分支结构二: 双分支结构 |
从“做不做”到“二选一”,设计 0℃以下,发布蓝色预警;-3℃以下,黄色预警的算法。 对照单分支结构流程图和双分支结构流程图的区别,解释代码区别。 在False的分支加上一个else。 根据if语句推断else的格式要求。 |
注意: else和它对应的if左对齐,后面有英文冒号,else的语句块也要缩进4个空格,和它对应的if的语句块左对齐。 |
|||
思考和尝试:如果要增加一条指令,无论发布的是什么颜色的预警信号,都要输出“请注意保暖”,加在哪里? |
1、添加在最后; 2、缩进的情况:只有else分支会输出”请注意保暖” ∴不能缩进。 3、尝试在代码中添加语句。 |
通过尝试不同的情况,分析并掌握分支结构缩进的时机。 |
|||
提醒流程图画在分支结构内的,缩进;在分支结构外的,不缩进。 |
|||||
项目活动一:我的作业规划 编写程序 (双分支结构) |
尝试用双分支结构实现基础功能: 如果花费时间>计划时间; 输出“超时了!”; 否则; 输出“按时完成!”。 |
编写代码: if ctime>stime: print(“超时了!”) else: print(“按时完成!”) |
巩固if…else语句的应用,完成项目活动的初步编写。 综合运用所学知识优化设计。 |
||
拓展:增加图形提示(比如说超时了亮红灯,按时完成亮绿灯)。 |
学有余力可以结合turtle库(已学,有数字资源)完成亮灯代码。 |
||||
学生代码展示和讲评。 关注常见错误,提示如何自查错误,如何看报错信息。 |
|||||
小结 |
单分支结构和双分支结构的Python语句构成和注意事项。 |
if 条件表达式 冒号(英文的),换行缩进4个空格; else 冒号(英文的),换行缩进四个空格; 放在分支结构外的东西不需要做缩进。 |
加强记忆。 |
||
分支结构三: 分支嵌套 和 多分支结构 |
分支嵌套的实现: 先判断是否发布霜冻预警,再判断发布什么颜色的预警,如何用Python实现? |
把两个拼起来。 把双分支结构放到单分支结构里面。 |
Python可以用Tab键统一缩进做嵌套,能更方便按照顺序结构-分支结构-循环结构逐步学习代码完成项目活动。 |
||
需要嵌套的代码可以使用Tab键统一缩进。 演示如何快速嵌套。 |
跟做。 |
||||
优化霜冻预警算法,实际情况有3种不同颜色的预警。 方法一:两个if…语句做嵌套。 缺点:分支多的情况下不美观,可读性较差; 方法二:if…elif…else语句来实现该功能。 展示三种颜色霜冻预警的代码,请学生归纳if…elif…else的格式及其执行过程。 |
1、if 条件表达式1: 四格缩进+语句块1 elif 条件表达式2: 四格缩进+语句块2 ……(可以写很多) elif 条件表达式n: 四格缩进+语句块n else:(也不一定要) 四格缩进+语句块n+1 if…elif…else左对齐 2、比较合理的写法和执行顺序是对应一路False线画分支结构的流程图。 |
if…elif…else作为多分支结构的实现很好用,可读性也很强,但它比较难的地方其实是条件表达式怎么写得更简单好看,虽然学生不一定能找到最优的写法,但是至少希望能有这样一个意识。 |
|||
分支结构的综合运用 |
结合所学知识,完成霜冻预警信号发布的完整代码。 当不满足发布霜冻预警信号的时候,输出“暂无霜冻预警”,满足发布霜冻预警信号的时候,按照我国气象局标准,发布对应信号。 |
修改代码并运行调试。 |
巩固分支嵌套和多分支结构的使用。 |
||
项目活动一:我的作业规划 调试及优化 |
提出问题: 是否可以在仅仅判断是否超时的基础上优化算法? 1、增加更多的判断条件(多分支); 按照活动单流程图,增加一个分支,修改补充完整代码。 程序是在不断地调试和修改中优化和进步的。 2、其他的个性化优化设计: |
1、在活动单上尝试优化作业时长规划的判断条件及输出内容。(建模) 2、尝试根据优化方案,利用多分支结构修改代码,实现新功能。 3、学有余力的可以参考示例和数字资源做更多的个性化设置。 (列表、turtle、复制几遍做总计等等……) |
拖延症的治疗需要根据个性化需求做一些个性化调整; 体验程序设计是不断地调试和优化的; 巩固if…elif…else语句的使用; 根据自己的实际水平增加难度。 |
||
作品展示 |
展示学生作品并讲评 |
倾听、修改、调试。 |
|||
总结 |
1、三种不同分支结构的Python实现方式及其对应的Python语句; 2、使用Python写分支结构代码时的注意事项。 |
单分支结构if… 双分支结构if…else… 多分支结构if…elif…(else…) 冒号,缩进,对齐,else后面没有条件表达式,if和elif都要写条件表达式。 |
梳理知识点,加深掌握。 |
||