- 浙教版(2019)信息技术 必修1 3.2.5 Python语言程序设计——函数和模块 教学设计(2课时)
- 浙教版(2019) 必修1 数据与计算 3.2.5.1 函数教学设计.docx--点击预览
- 浙教版(2019) 必修1 数据与计算 3.2.5.2 模块教学设计.docx--点击预览
文件预览区
|
|
资源描述
函数教学设计函数教学设计 函数函数 教材内容:教材内容:本课包含教材 3.2.5 函数与模块 1.函数的构造及应用 适应的课程标准:适应的课程标准: 1.7 掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。 教学目标:教学目标: 掌握函数的构造(函数名、参数结合、函 数体、函数值)和调用方法。 掌握通过自定义函数编程解决问题的方法。 指向的核心素养:指向的核心素养: 信息意识:在合作解决问题的过程中,愿意与 团队成员共享信息,实现信息的最大价值。 计算思维:(1)通过判断、分析与综合各种信 息资源,运用合理的算法形成解决问题的方案。 (2)总结利用计算机解决问题的过程与方法,并 迁移到与之相关的其他问题解决中 学习环境:学习环境:有教学控制软件的多媒体机房,需要安装 Python 编程环境。 课程标准课程标准 和和 教学目标教学目标 建议课时:建议课时:1 课时 教学环节教学环节教学过程教学过程设计意图设计意图 教学活动教学活动 设计设计 情境导入情境导入 问题 1:Python 中有很多内建函数,现有一个列表 lst = 3, 2, 5, 4, 7,请问要找到列表中最大的数应该使 用哪个函数?代码如何写? 参考答案: max,max(lst)。 问题 2:如果不用 Python 的内建函数 max,直接写代码 来找到列表 lst 中的最大值代码该如何写? 参考答案: lst = 3, 2, 5, 4, 7 maxn = lst0 for item in lst1: if item maxn: maxn = item print(maxn) 问题 3:对比问题 1 和问题 2 查找列表中最大值的方法 你觉得哪种方式更加简单?假设在你的程序中有 26 个 列表需要查找列表中的最大值,是采用问题 2 的方式重 复问题 2 中的代码还是直接调用 max 函数更加简便、省 力? 参考答案: 使用内建函数更加简单。如果需要重复使用函数,调用 内建函数更加简便、省力、省代码。 教师总结: 内建函数实际上只是实现了某段代码功能的快捷方式。 设计意图:通过问题 1、问题 2 和问题 3 让学生了解内建函数是什么。使用内建函 数的优势和函数的作用,激发学生学习函 数的兴趣。通过问题 4 引出本节课的内容 函数的构造及应用。 内建函数可以重复使用,省去我们写重复代码的成本。 问题 4:同学们查一查?有没有什么函数可以快速的计 算列表中所有数字的平均值的? 参考答案: 没有。 教师总结: 不是任何情况下都有可以用内建函数来解决我们编程中 的问题,不是所有的功能都可以用内建函数来解决,但 是在我们实际的编程中确实存在在这样一些功能,经常 需要使用的,比如求平均值,Python 的作者也考虑到 了这一点,允许我们自定义函数,把我们需要重复解决 的问题和功能定义为自定义函数,这样我们就可以在自 己的程序中调用自定义函数来简化我们的代码,去除重 复的代码。 新课教学新课教学 知识讲解定义函数的语法及定义函数示例 教师讲解 Python 中定义函数的语法: def 函数名(参数集合): return 函数值 其中的函数名命名规则和变量名命名的规则一样。 参数集合是调用该函数需要提供的数据。比如数学中的 函数 f(x) = x + 1,如果不告诉 f(x)参数 x 的取值,这 个函数就无法进行计算。 函数体是函数需要执行的具体代码(计算过程) ,比如 f(x) = x + 1 中的 x + 1。 函数值是函数执行完毕以后计算的结果,如 f(x) = x + 1 这个函数,f(2) = 3,3 就是函数计算的返回值。 定义完成函数以后可以像内建函数一样,在程序中调用 该函数。 任务:观察下面 3 个函数的构造和调用方式,小组讨论 这些函数有哪些不同点?小组合作绘制函数的构造的思 维导图,指明哪些部分是必须的,哪些部分是不可或缺 的。 (1) def alert(): print(注意危险) alert() #调用 (2) def alert(msg): print(msg) alert(危险) #调用 alert(注意) #调用 (3) 设计意图:通过讲解函数的定义语法及实 例让学生了解函数定义的语法,函数的构 造和函数的调用。 设计意图:通过该任务加深学生对于函数 构造的理解,与此同时,培养学生小组合 作的能力,并在合作学习的过程中,与团 队成员共享信息,实现信息的更大价值的 信息意识素养。 def my_abs(x): if x = 0: return x else: return -x my_abs(6) #调用 my_abs(-8) #调用 参考答案: (1)无参数集合、不返回函数值的函数定义和调用 (2)有参数集合、不返回函数值的定义和调用 (3)有参数集合、有返回函数值的定义和调用 学习任务“素数检验”函数的编程实现 编写一个函数,接受一个大于 1 的自然数作为参数,若 该自然数是素数返回 True,否则返回 False。 参考答案: def is_prime(x): yes = True for i in range(2, x - 1): if x % i = 0: yes = False break return yes 学习任务“地块面积计算”编程实现 某地块为四边形,地块边长分别为 L1、L2、L3、L4。 请编程实现该地块面积计算的程序。 分析: 要想计算其面积可通过如下算法完成,L1、L3 相交的 顶点和 L2、L4 相交的顶点画一条线 L5,L5 将此地块划 分成两个三角形,只要再丈量出 L5 的长度,就可以利 用海伦公式分别计算出这两个三角形的面积 S1 和 S2, 从而得到此地块的总面积 S(S = S1 + S2) 。 该算法将两次使用海伦公式分别求 S1 和 S2 两个三角形 的面积,这里存在了重复的代码,所以可以先编程实现 一个求三角形面积的函数 Area。 任务一:利用海伦公式编写求三角形面积的函数。 分析: 该函数接受 3 个参数,分别是三角形的三条边,返回的 函数值是三角形的面积。利用的计算模型是海伦公式。 设计意图:让学生初步掌握构造定义函数 的方法,并加深对函数构造的理解。培养 通过判断、分析与综合各种信息资源,运 用合理的算法形成解决问题的方案的计算 思维。 设计意图:掌握构造自定义函数解决问题 的方法,培养通过判断、分析与综合各种 信息资源,运用合理的算法形成解决问题 的方案的计算思维。 参考答案: def area(a, b, c): p = (a + b + c) / 2 s = (p * (p - a) * (p - b) * (p - c) * 0.5 return s 任务二:利用求三角形面积的函数来计算地块面积。 分析: 地块的 L1、L2、L3、L4、L5 的长度已知的情况下,调 用函数 area(L1, L2, L5)计算 S1 的面积,调用函数 area(L3, L4, L5)计算 S2 的面积。S 为 S1 和 S2 面积的 总和。 参考答案: S = area(L1, L2, L5) + area(L3, L4, L5) 任务三:地块面积的计算也是一个常用的功能,请将地 块计算定义为一个函数方便以后遇到类似问题时直接调 用。 分析: 地块计算函数返回的函数值是地块的面积,接受 的参数是地块的 L1、L2、L3、L4、L5 的长度。在该函 数内部可以调用 area 函数分别计算 S1 和 S2 的值,然 后返回 S1 和 S2 的和即为地块的面积。 参考答案: def quad(a, b, c, d, e): return area(a, b, c) + area(a, b, c) 调用方式:quad(L1, L2, L3, L4,L5) 设计意图:任务三能够进一步加深函数应 用的理解,不仅仅是在解决问题的时候会 用到函数,问题本身也可以是一个函数, 把解决问题的代码封装为一个函数。通过 “地块面积计算”问题的解决完成本课的 重点也是难点“构造自定义函数解决实际 问题”的教学。解决这个问题需要计算机 解决问题的一般步骤:“抽象建模” “设计算法”“编写程序” ,因此,这 个过程中中也培养学生总结利用计算机解 决问题的过程与方法,并迁移到与之相关 的其他问题解决中的计算思维。 课堂小结课堂小结 知识梳理: 1.函数的构造(函数名、参数结合、函数体、函数值) 和调用方法。 2.通过自定义函数编程解决问题的方法。 通过回顾总结帮助学生巩固函数的构造及 应用,通过自定义函数编程解决问题的方 法。 作业布置作业布置 基础作业(面向所有学生): 本节配套课后作业 提升作业(面向学有余力学生): 尝试编写一个函数实现内建函数 len 的功能 根据学生的基础和能力设置不同难度的作 业,以满足不同层次的学生需求。基础作 业巩固本节课所学知识,提升作业让学生 能够更多的思考与探究,进一步加深对于 函数构造与应用的理解。 教学设计教学设计 思路思路 本课内容为函数的构造与应用。函数是编程中比较重要的内容,函数可以把实现同一功能程序代码进行封装, 去除了程序中重复的代码,缩减了代码的长度,在解决同类程序问题时更加便捷,是编程解决实际问题的过程中必 不可少的工具。 在教学中,建议通过内建函数的使用导入本节课的内容,让学生对比使用内建函数和不使用内建函数的代码, 亲身感受函数给编程带来的便利,缩减程序代码长度方面的优势,了解函数在代码复用方面起到的作用,激发学生 学习函数的兴趣。 对于函数的构造这块内容,建议教师可以通过讲解的方式来介绍,随后设置一个任务,让学生观察不同函数, 小组讨论、分析这些函数构造的区别,总结组成函数各个部分,绘制函数构造的思维导图,加深学生对于函数构造 的理解。 学生掌握了函数构造后,建议布置实际编程问题给学生,在解决这些问题的过程中掌握构造自定义函数解决实 际问题的方法,完成本课的重点教学和难点教学。在本案例中提供给了一小一大 2 个任务。一个任务是在学生了解 函数的构造以后的小任务“素数检验”函数的编写,通过这个任务能够帮助学生进一步的理解函数的构造并初步掌 握自定义函数的编写。随后的大任务“地块面积计算”是一个综合性较强的实际问题,通过分析问题、设计算法、 编写程序掌握构造自定义函数解决问题的方法。在解决“地块面积计算”任务的时候,设置了一个编写“地块面积 计算”函数的小任务,学生通过编程解决这个任务能够更好的理解函数的复用在解决实际问题时候的应用场景。 针对针对 核心素养核心素养 培养的培养的 设计考虑设计考虑 本节课的主要内容是函数的构造与应用,需要编写程序构造自定义函数解决实际问题,所以核心素养的培养主 要落在计算思维的培养上。编写自定义函数的时候,必须对函数的构造完全掌握,为了帮助学生更好的掌握函数的 构造,可以让学生小组合作讨论、分析,深入解剖函数的构造,在此过程中培养学生愿意与团队成员共享信息,实 现信息的最大价值的信息意识。 本节课对于计算思维的培养有两个维度。第一个维度是通过判断、分析与综合各种信息资源,运用合理的算法 形成解决问题的方案。本课在进行教学设计的时候设计了两个学习任务 “素数检验函数”和“地块面积计算”。学 生在解决这两个问题的时候要给予学生充分的时间进行分析、讨论,根据分析、讨论的结果形成合力的算法来解决 这两个问题。第二个维度是总结利用计算机解决问题的过程与方法,并迁移到与之相关的其他问题解决中。在编写 构造函数的过程中,也需要经历“抽象建模”“设计算法”“编写程序”这 3 个计算机编程解决问题的步骤, 在完成本课设计的这两个学习任务的过程中,学生将这种方法迁移并运用到编写构造函数的过程中,从而培养第二 个维度的计算思维。 本节课信息意识的培养主要落实通过小组合作,讨论、分析函数构造的各个组成部分,并绘制函数构造思维导 图的过程中。为了让学生能够讨论分析函数构造的各个组成部分,教师先要把函数的构造进行简单的介绍,然后教 师准备了几个简单的函数构造的小例子,这些例子有的没有参数集合,有的没有返回值,有了这些例子,学生可以 针对这些例子共同探讨、分析,培养学生愿意与团队成员共享信息,实现信息的最大价值的信息意识。 模块教学设计模块教学设计 模块模块 教材内容:教材内容:本课包含教材 3.2.5 函数与模块 2.模块的导入与应用 适应的课程标准:适应的课程标准: 1.7 掌握一种程序设计语言的基本知识,使用程序设计语言实现简单算法。通过解决实际问题, 体验程序设计的基本流程,感受算法的效率,掌握程序调试与运行的方法。 教学目标:教学目标: 理解模块的功能及应用。 掌握模块的导入方法。 掌握模块中常数和函数的使用。 学会利用模块中的常数和函数编写程序解 决实际问题。 指向的核心素养:指向的核心素养: 信息意识:在合作解决问题的过程中,愿意与 团队成员共享信息,实现信息的最大价值。 计算思维:通过判断、分析与综合各种信息资 源,运用合理的算法形成解决问题的方案。针对 给定的任务进行需求分析,明确需要解决的关键 问题。运用基本算法设计解决问题的方案,能使 用编程语言或其他数字化工具实现这一方案。 学习环境:学习环境:有教学控制软件的多媒体机房,需要安装 Python 编程环境。 课程标准课程标准 和和 教学目标教学目标 建议课时:建议课时:1 课时 教学环节教学环节教学过程教学过程设计意图设计意图 教学活动教学活动 设计设计 情境导入情境导入 问题:各位同学,大家应该都见过电工,电工在工作的 时候需要用到哪些工具?他是全部拿在手里吗?如果不 是,通常是如何保管的? 参考答案: 电工常用的工具:螺丝刀是一种用来拧转螺丝以使其就 位的工具。老虎钳用来起钉子或夹断钉子和铁丝,电能 表的简称,是用来测量电能的仪表。电工使用的工具比 较多,一般不会都拿在手里,不是每样工具每次都要使 用到,电工把这些工具按照一定的分类放到不同的工具 包中,需要的时候才拿出某个工具使用。 讲解:同样的,Python 有很多的内建函数、常数,但 是这些函数、常数不可能每次编程都用到,每次都加载 这些函数、常数到当前的编程环境中是没有必要的,所 以,我们也仿照电工的做法,把这些内建函数和常数放 到工具包中,这些工具包在 Python 中称之为模块。 通过电工保管工具的工具包引出本节课的 学习内容模块。通过与生活具体实例对 比,让学生理解模块的功能。 新课教学新课教学 知识讲解模块的导入及使用 导入模块: import from import 例: import math from math import sqrt 调用模块中的函数和常数 第种方式可以用.或者.的方式来调用函数名或常数。比如: math.sqrt(9) #结果:3.0 math.pi #结果:3.141592653589793 第种方式可以直接用或者的方式来调 用函数名或常数。比如: sqrt(9) #结果:3.0 pi #结果:3.141592653589793 学习任务计算圆面积 任务:编程求圆面积,公式为 s=r2 中的 和 r2 分别调用 math 模块中的圆周率常数 math.pi 和函数 pow 来完成。 提示:math.pow(x, y)实现指数运算,得到 x 的 y 次方。 参考答案: import math r = float(input(请输入圆的半径 r:) pi = math.pi s = pi * pow(r, 2) print(圆面积是: + str(s) 学习任务合唱比赛出场顺序安排 高一年级的(2)班、 (3)班、 (5)班、 (8)班、 (9) 班共 5 个班级的学生参加大合唱比赛,为了公平起见, 需要安排他们的出场顺序。请同学们至少提供两种不同 的方法来解决该问题。 Random 模块中的常用函数: random.random():生成一个0,1)范围内的实数 random.uniform(a, b):随机生成一个a,b范围内的 实数 random.randint(a, b):随机生成一个a,b范围内的 整数 random.choice(seq):从序列的元素中随机挑选一个元 素,比如 random.choice(range(10),从 0 到 9 中随 机挑选一个整数。 让学生了解模块导入函数和常数的两种方 式,两种导入方式下如何调用模块中的函 数和常数,理解模块的功能和应用。 通过实践任务让学生掌握导入模块及模块 中函数、常数的使用。进行本节课重点 “掌握模块中常数和函数的使用”的教学。 通过编程解决实际问题,进行本节课重点 “掌握模块中常数和函数的使用”的教学。 该问题的解决要求提供两种方案,这就要 求学生充分挖掘 random 模块中的函数的 使用,选择模块中合适的函数来解决问题, 在此过程中完成本节课难点“学会利用模 块中的常数和函数编写程序解决实际问题” 的教学,培养学生的计算思维。在此过程 中也培养了学生在合作解决问题的过程中, 愿意与团队成员共享信息,实现信息的最 大价值的信息意识。 random.sample(seq, k):从序列中随机挑选 k 个元素 random.shuffle(seq):将序列的所有元素随机排序 参考答案: random 模块中的函数 shuffle 接受一个列表作为输 入参数,该函数将该列表中的所有元素重新随机排序, 然后再将所有元素重新随机排序后的列表作为函数值返 回。可以构建一个列表 cla = (2)班, (3)班, (5)班, (8)班, (9)班,然后直接使用 shuffle 函数得到 cla 所有元素随机排序的列表。 import random cla = (2)班, (3)班, (5)班, (8)班, (9)班 random.shuffle(cla) for x in cla: print(x) 先构建一个班级的列表 cla = (2)班, (3)班, (5)班, (8)班, (9)班,在列表 cla 中每个班级 都对应一个唯一的索引,索引的范围为0, 4,可以使 用 random 模块的 randint 函数随机生成 5 个不重复的 整数,生成的整数范围为0, 4,生成的不重复的整数 就是 cla 随机的索引,通过随机的索引就能得到随机班 级的出场顺序。 import random cla = (2)班, (3)班, (5)班, (8)班, (9)班 indexs = while len(indexs) 5: i = random.randint(0, 4) if i not in indexs: indexs.append(i) for i in indexs: print(clai) 构建一个班级的列表 cla = (2)班, (3)班, (5)班, (8)班, (9)班,从这个列表 cla 中随机 的拿出一个元素,放到列表 cla2 中,重复这个过程直 到 cla 中的元素都被放到 cla2 中,cla2 就是随机班级 的出场顺序。 import random cla = (2)班, (3)班, (5)班, (8)班, (9)班 cla2 = for i in range(1, 5): p = random.choice(cla) cla.remove(p) cla2.append(p) cla2.append(cla0) for x in cla2: print(x) 课堂小结课堂小结 知识梳理: 1.模块的功能及应用。 2.模块的导入方法。 3.模块中常数和函数的使用。 4.利用模块中的常数和函数编写程序解决实际问题。 通过回顾总结帮助学生巩固本节课的学习 内容。 作业布置作业布置 基础作业(面向所有学生): 本节配套课后作业 提升作业(面向学有余力学生): 通过网络搜索学习自定义模块的相关资料,尝试编写一 个判断素数的函数并将这个函数封装到自定义的模块中。 为满足不同层次学生的需求,设置不同难 度的作业,巩固本节课学习到的知识,提 升作业让学生通过自己编写模块对模块的 功能及应用有更深入的了解,也有助于学 生进一步了解模块化编程的思想。 教学设计教学设计 思路思路 本课内容为模块的导入与应用。模块能够有逻辑地组织 Python 代码段,它按照代码的用途和分类,将代码分配 到不同的模块中。函数封装了实现特定功能的代码,而模块可以有效的将函数组织、保存起来。在编程的过程中引 入模块中已经定义好的函数能够简化程序代码,减少程序复杂度。 本课内容更多的侧重是模块的应用,通过应用模块封装的函数和常数编程解决实际问题,建议采用讲授法、任 务驱动法、探究法等教学方法。 对于第一次接触模块的学生,模块是一个较为抽象的概念,建议教师通过生活中的具体事例(如:电工的存放 工具的工具箱)对比 python 中模块的功能,让学生理解 python 中模块的功能。 在学习模块的导入、模块中函数和常数的使用时,建议教师先通过简单的编程实例来讲解模块的导入、模块中 函数和常数使用(如:math 模块函数的简单编程应用),随后让学生动手实践完成一些较为简单的模块导入、模块 中函数和常数应用的问题来掌握模块的导入、模块中函数和常数的应用,并理解模块的应用。 在掌握了模块的导入、模块中函数和常数的使用的基础上,建议教师通过布置一个真实情境的任务(如:教材 中的合唱比赛出场顺序问题),在完成该任务时,教师要提供给学生完成该任务可能使用到的模块、模块中的函数 和常数的说明,学生通过小组合作、自主探究完成该任务。在完成该任务时,建议让学生能够充分使用模块中的不 同函数,提供不同的方案和程序完成该任务,使学生更好的掌握模块。 对于本课的教学重点“掌握模块中常数和函数的使用”主要通过教师布置的一系列任务的完成来进行教学。本 课的教学难点“学会利用模块中的常数和函数编写程序解决实际问题”主要通过真实情境任务的编程解决来突破。 针对针对 核心素养核心素养 本节课的主要内容是模块的导入及应用,学生在掌握模块的导入和模块中函数和常数使用的基础上,能够利用 模块中的常数和函数编写程序解决实际问题。因此,核心素养的培养主要落在计算思维的培养。在解决实际问题的 培养的培养的 设计考虑设计考虑 过程中需要学生合作、探究分享信息共同解决问题,在此过程中也可培养信息意识。 为了培养学生的计算思维,教师在本节课中安排了一个小任务“计算圆面积”和一个真实情境的问题“合唱比 赛出场顺序安排”。在解决这两个问题的过程中学生都需要进行需求分析,明确解决问题的关键,设计合理的算法 解决这个问题。在解决问题的过程中,某些算法的实现可以通过模块提供的函数实现,教师提供给学生和这个问题 解决相关的模块,并给出该模块中函数的相关功能,学生可以根据实际需求和自己设计的算法选择合适的模块和模 块中的函数来编写程序解决问题。 本节课信息意识的培养主要落实在解决“合唱比赛出场顺序安排”问题的过程中,学生要通过小组合作、讨论、 探究解决该问题的。学生能够在此基础上进行讨论、探究,在此过程中培养合作解决问题的过程中,愿意与团队成 员共享信息,实现信息的最大价值的信息意识。
展开阅读全文
相关搜索
资源标签