资源简介 《义卖竞价(二)——擂台算法》教案一、教材分析随着问题复杂度的增加,我们需要将问题进行拆解细化,将问题拆解为不可再分的小问题,然后分别实现。上节课学习了三个数据比较大小的表达式构建和结构写法,本节课将竞价者扩展到多人,须用循环结构实现。同时,输出的结果要将“姓名、价格”的信息提取出来,需要通过分割函数来实现数据拆分。二、学情分析复杂的问题隐藏着多个需要细分的小任务,应开始引导学生自行拆解任务,自主理解每行代码的含义,这样学生才能将知识融会贯通,真正掌握写代码的技能。三、教学目标1.知识与技能:掌握使用分割函数进行数据拆分的方法;能够运用擂台算法找最值。2.过程与方法:采用案例教学法,延续上一节课的义卖竞价场景,使学生理解擂台算法;启发式教学,引导学生思考问题、分解问题。3.情感态度与价值观:善于分解复杂问题,提高分析问题、解决问题的自信心和条理性;增强参与团队讨论的能力。四、教学重难点理解擂台算法。五、教学方法案例法、启发法、讨论法。六、教学过程?导入新课师:上节课我们制作了一个可以找出三个数中最大值的程序。但我们知道,在义卖中,每次竞价的人数是不确定的,而且常常超过三个人。因此,像上节课那样设置确定的a、b、c三个变量的程序显然是不能满足实际需要的。另外,上节课的程序只能输入和输出价格,我们能不能完善程序,使程序能输入和输出优胜者的姓名和出价呢?这节课我们就来学习可以找出多个数据中最大值的擂台算法,以及同时输出优胜者姓名和出价的方法。【设计意图】发散案例,帮助学生理解学习任务,引导学生思考。?讲授新课一、算法描述及流程图师:随着问题复杂度的增加,我们需要将问题进行拆解细化。细化的原则是将问题拆解为不可再分的小问题,然后分别实现。我们已经掌握了三个数据比较大小的表达式构建和选择结构的写法。现在要扩展到多人,其算法跟三人竞价相似,多人竞价的关键,就是重复的比较过程。与打擂台很相似,留在台上的是胜者。我们可以根据输入的人数,构建循环结构,从而找到最高的价格。假设我们先不实现输入输出优胜者的“姓名、价格”的功能,只描述一个多人竞价找出最高出价的算法,请同学们画出流程图。(提示:构建循环结构,人数可设置为n)生:小组讨论,画出流程图。师:总结、点评学生的成果,展示范例(见课件)。【设计意图】给出解题提示,让学生自行探索解决问题的方法,降低走弯路的几率;通过小组讨论,激发学生的求知欲。二、数据的拆分与提取1.分割函数split师:从上面的流程图中我们解决了比较多个出价的大小的问题,还有一个问题需要解决:怎么显示出价者的姓名,也就是怎么把姓名和出价联系起来?这就需要我们输入姓名和出价的数据,以及输入数据后把“姓名”“价格”的信息提取出来,分别储存到不同的变量中。Python语言提供了字符串分割的函数。分割函数split()格式:字符串类型变量1=字符串类型变量.split(“分割字符串”)字符串类型变量是指任意存储字符串的变量名分割字符串是指用来分割“字符串类型变量”中字符串的具体“字符”例如:shu=“1254567856”x=shu.split(“5”)该语句被执行时,“shu”变量中存储的字符串,只要遇到“5”,就会被分隔,该字符串中的数据会被分割为“12”“4”“678”“6”等新的字符串。分割出来的子串被依次保存在以x变量名开头的若干个位置中,如“12”被保存在x[0]中,“4”被保存在x[1]中,按照顺序依次往后排。其中每一个都可以看作单独的字符串类型变量。2.数据拆分利用分割函数split(),我们可以用空格来分割“姓名”和“价格”,拆分后,第1个数据为姓名,第二个数据则为出价。输入数据的存储变量定义为“indata”,存储拆分后数据的变量名字定义为“slt”,拆分出来的姓名最后存储在变量“name”中,存储最大值的变量定义为“maxmark”。变量定义可依据个人习惯,比如储存姓名的变量你也可以定义为“xingming”,变量名以直观简洁为宜。数据拆分语句如下:slt=indata.split(“”)name=slt[0]maxmark=slt[1]【设计意图】解释分割函数的含义和用法。三、程序的实现师:接下来,请同学们依据自己完善的算法流程,完成程序的编写工作。生:编写程序。师:请同学们设计一组测试数据,在Python环境中测试自己写的程序是否能够实现任意数量的人参与竞价。生:测试程序。师:(展示范例程序)同学们的程序都通过测试了吗?比较范例,看看自己的程序还存在什么问题。生:举手发言,说出自己的体会。师:前几节课都是老师来解释程序代码的语句含义,这次由同学们自己来说好吗?生:填写表格。师:解释语句含义,见课件。【设计意图】此次程序编写难度较大,让学生在多次修改和体会中理解擂台算法,提高学生自主编写程序的能力。?课堂总结练习与思考设计一个程序:随机生成N个随机整数(范围自定),并求出最大值、最小值和比平均值大的值。【设计意图】巩固所学的用分割函数split()分割数据的知识,拓展其用法,提高学生举一反三的能力。教学反思 展开更多...... 收起↑ 资源预览