第9课列表、元组和字典_第1页
第9课列表、元组和字典_第2页
第9课列表、元组和字典_第3页
第9课列表、元组和字典_第4页
第9课列表、元组和字典_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9课列表、元组和字典一、学习目标.认识列表、元组和字典的数据结构,明白它们之间的联系和区别。.学会列表、元组和字典的定义和调用,掌握简单的操作函数。.在程序设计中根据需要,灵活使用列表、元组和字典表达、处理数据。.学会冒泡排序法的算法。二、教学重、难点教学重点:对列表的引用、排序、插入、删除等操作。教学难点:列表、元组和字典的区别和使用场景。三、教具准备安装有python3.6的计算机四、教学设计环节名称活动设计(任务、步骤、要求、成果)设计在意图反思第 -环节生活发现一、生活情境“五岳归来不看山,黄山归来不看岳”,三山五岳乃是我国境内的名山,以其优美的风景、险峻雄奇的气势征服了众多的国内外游客,你们有没有去旅游过呢?现在知道泰山海拔1545米、华山海拔2154.9米、衡山海拔1300.2米、恒山海拔2016.1米、嵩山海拔1491.71米,你们能不能用找出五岳中最高的是那一座,最矮的是那一座,平均海拔高度是多少呢?如果给你更多的山峰海拔,比如全国所有高峰的海拔或者全球所有高峰的海拔,你还能不能快速的找到呢?二、问题提出引导策略:引导学生把特殊数据扩展到一般数据。如:更多的山、更多数据的集合等。.讨论问题(1)怎么求最大值和最小值?(2)怎样求平均值?(3)有没有更加方便的方法实现上面的计算?

引导策略:引导学生将众多数据合成一个整体思考。如:如果把所有的山看作一个整体并用统一的方法来处理,是不是更加方便?2.生成问题(1)能否用循环语句配合分支语句来求解?(2)循环语句计算的具体算法是什么?(3)如果能将五座山的高度集合成一个整体进行计算是否会更加好理解?(4)对一组聚合在一起的数据能够进行哪些操作?三、我的设想(小组讨论一分钟).小组代表发言,汇报自己小组想出来的有价值的问题。.组间进行评价,讨论算法的可行性和。第二环节庖丁解牛引导策略:首先肯定学生所讨论问题,然后让学生结合已有知识能否解决,引导需要学习本堂内容能够快速解决以上问题。如:刚才同学们讨论的几个问题很有意义,如果使用循环语句来解决问题完全可以,但是代码量会比较大,算法也更复杂。我们首先试着用循环语句来解决,在学完本课内容后就可以非常简单的解决该问题了。我们之前学习过变量、for循环、while循环还有if分支语句,合理的应用不同的语句结构都可以解决本问题,下面分组使用自己设计的不同算法来试着解决。一、使用变量和循环、分支语句实现算法步骤1:画出流程图磨刀不误砍柴工,在编写代码之前绘制流程图可以帮助我们理清逻辑结构、明确思路。l.for循环流程图

F蚂青域人致值用《到ieif尊喻人景值*引mr却姮说虹•由金右D不哀三百[^星系//嘘工总向•哥SM.至£曰明『/2S^Z^z^uirmiur+H前壬期出血.口外叶本餐坐:・jm*|阳hif单如包班:・Jmii:,巧两・平生.哈!:・川1咕32.while循环流程图

步骤2步骤2:编写代码分组合作编写代码代码截图:1、for循环isum=float(input("请输入一个高度:”))并输入第一座山的高度imax二isum#初始化imax变量的值为第一座山高度,用来存储最大值imirFisum#初始化imin变量的值为第一座山高度,用来存储最小值a=0#变量a用来存储循环内输入的高度,用来和isum相加foriinrange(4):#还需要循环4次a二float(input("请再输入一个高度:"))#a接收高度ifa>imax:#当/比imax大,就把a的值赋给imax就把a就把a的值赋给iminelif 当a比imin=aisum=isum+a#累力口print("最高海拔:",imax,"米〃)print("最正海拔:",imin,"米"5print(〃平均海拔〃,isum/5,〃米〃)2、while循环

imax=float(input("输入一个海拔:"))3用来存储最大值imin-imax」用来/『借最小值sum=imax并用来存储录加和社二04循环体内用乘存储输入海拔b-E循蚌变量whileb<=4:=循环条件a=float(input匕再输入一个海拔:"))#输入海拔1-a》imax:甘若a比imax大,将a的值赋与imaxitnaK=a■.:1a/iiuin:3若3比imin小,将a的值赋与iminIsun)=Isuin-i-ati累加b=b+lt:循环变量埴如primC最高海拔*[imaxf)DrititC最低海拔;Limin(米0MititC平均海拔;[isum/5/米”)步骤3:运行调试.调试运行,遇到疑问组内讨论,调试完成后小组间比较结果。.函数float()的作用?.为什么imax和imin不能直接用max和min?一、使用列表来解决五岳问题步骤1:认识列表列表(list)是包含0到多个对象引用的序列。列表的定义使用“□”把数据括起来,其中的每一个数据(称作元素)用“,”隔开。列表内可以包含任何数据类型,比如数字、字符串,同一个列表也可以包含不同数据类型。小练习:将五岳的高度存放到一个列表中,并打印列表。height=[1545,2154.9,1300.2,2016.1,1491.71]print(height)步骤2:调用列表元素调用列表中某一个元素,需要使用列表的下标,列表的下标从0开始,因此第1个元素就是height[0]。小练习:用print函数打印输出height列表中第1和第3个元素。height=[1545,2154.9,1300.2,2016.1,1491.71]print(height[0],height⑵)步骤3:遍历列表通常用for循环遍历height列表的数据。小练习:打印显示每个元素的值。height=[1545,2154.9,1300.2,2016.1,1491.71]foriinheight:print(i)小组讨论1、i在每次循环时的值是多少?2、若要求得列表中所有元素的和,代码该如何编写?步骤4:列表的排序可以使用sort()函数对列表进行排序。小练习:将五岳列表按照高度从小到大排序。

height=[1545,2154.9,1300.2,2016.1,1491.71]print(he:ight)height,sort0piini(height)对列表而言还有count()、index()、reverse()等函数可以进行排序和统计,请同学们试验一下这几个函数的作用。步骤5:结合以上所学用列表的方式实现五岳问题1、结合排序和元素调用可以得出最大值和最小值。2、通过for循环遍历列表可以计算列表的和。3、分组进行设计,要设计流程图,完成后进行分享评价。流程图:代码截图:

height=[1,545,2154.9,1300.2,2016.1,1491.71]height.sorr0imax=height_4]imin=height[0]isum=0foriinheight;isum=isum-iprint("最高号拔;im已x,"米")print("最彳氐海拔:*,imin「来平均海拔:isum/5「米郎)引导策略:引导学生注意用^序算法和遍历列表的方法。如:你能试着使用循环语句来实现列表数据的排序吗,有几种算法,那种更快?步骤6:列表的操作可以用命令和函数对列表进行添加、删除和插入等操作。1、添加使用append()函数在列表末尾添加一个元素示例:height.append(1864.8)作用:在列表的末尾再添加一个元素1864.8(黄山海拔)。2、删除a.使用del保留字删除某一个元素。delheight[0]删除了列表的第一项。b.使用pop()函数删除某一个元素。height.pop(0)删除了列表的第一项,与a相同。C.使用remove()函数删除特定内容的元素Height.remove(1545)删除数值为1545的元素3、插入使用insert()函数在列表中插入一个兀素height.insert(4,1864.8)结果对照:[1545,2154.9,1300.2,2016.1,1491.71] #操作前列表[1545,2154.9,1300.2,2016.1,1864.8,1491.71]#操作后列表步骤7:列表操作综合练习使用列表的操作方法在列表中加上三山的海拔(黄山:1864.8米、庐山:1473.8米、雁荡山:1056.5米),并计算三山五岳的最高海拔、最低海拔和平均海拔。小组讨论先画出流程图,再进行代码修改和调试。流程图:

代码截图:height=[1545,2154.9,1300.2,2016.1,1491.71]height,append(1864.8)height,append(1473.8)height,append(1056.5)height,sort()imax=height[len(height)T]#len()函数的作用是求得一个列表的长度imin=height[0]isum=0foriinheight:isum=isum+iprint("最高褥拔:“,imax,“米")print("最彳氐海拔:",imin,"来”,print("平均海拔:",isum/len(height)米")思考:本程序还有什么缺点,应该怎样改进?步骤8:sort()函数的算法实现引导策略:引导学生理解冒泡排序算法和快速排序法。如:假设给你一副扑克让你从小到大排序,应该怎么做呢?1、冒泡排序法冒泡排序法是计算机进行排序时经常用到的算法。在排序时先比较前两个数据,如果第一个数较大则交换两个数,否则不变,再继续比较第二个和第三个把最大的放到后面,以此类推最后整个列表的最后一个数就是最大的,就像气泡向上冒一样。继续将前面的数据再按冒泡法排序最后就将整个数据列表排好了数据。以五岳的数据为例,第一轮15452154.91300.22016.11491.71原始数据15452154.91300.22016.11491.71交换1、215451300.22154.92016.11491.71交换2、315451300.22016.12154.91491.71交换3、415451300.22016.11491.712154.9交换4、5

可以看到」最大的2154.9逐渐的从前移动到了最后。思考:a.n个数字第一轮排序需要进行几次交换,为什么?(n-1次)b.n个数字需要几轮交换,每轮需要进行几次交换,为什么n-i轮,每轮交换比上一轮少一次)代码示例:inum=[1545,2154.9,1300.2,2016.1,1491.71]foriinrange(lcn(inuni)T):#若列亲长度为m总计需要循环nT次forjinrange(iBn(inujn)-iT):#若列表长度为n,需要循环n-(i+1)次,因为i的初始值为口ifinuni[j]>inunt[j+l]:inum[j]=inujn[j]+inujn[j+l]inum[j+l]=inujn[j]-inujn[j+l]inum[j]=inujn[j]-inujn[j+l]print(inum)思考:交换两个数的值有哪些方法,各有哪些优缺点?(1、借助第三个变量;2、不借助第二变量;3、使用python运算符(inum[j],inum[j+1]=inum[j+1],inum[j]))2、算法的优化冒泡排序法比较容易理解但是在数据量很大的情况需要的步数非常多,n个数需要进行(n+1)*(n+1)次运算,假设有1亿个数进行排序需要多少步运算?为了解决冒泡排序法的这个缺点,我们可以对排序算法进行优化,比如使用更快的快速排序法。3、快速排序法快速排序法是对冒泡排序法的一种改进。它的基本思想是:1、把一组需要排序的数据分成两部分,让其中一部分的所有数据都比另一部分的所有的数据小。2、按第1步方法对这两部分数据分别进行多次快速排序,直到完全将数据按要求用¥序。 » 7S 21 噌 弟 12 64 77 H画始收城.千战值为S41) u * 咒 将 64 "敢也死桑懂卜辛必席直归大于整选1ft分盥» U M 75 $5 64 11用敬担转机埋值割号或片个亍般遗.#教帆的《叁艇ftnfa75回--1|0|M拆行千数单并接够唯值号用台7由进斤推味12U1芬« 55 75 64 771投从右向左的腰序仆井后的敏小快速排序示意图3、快速排序算法,简称快排,是最实用的排序算法,没有之一,各大语言标准库的排序函数也基本都是基于快排实现的。要用python写出快速排序算法的代码,需要用到函数的递归,请自行获取相关资料尝试编写代码。三、元组的使用步骤1:认识元组元组(tuple)可以理解为一个不可修改的列表,在定义时与列表也相似,不同的地方在于列表使用“[]”,而元组使用“()”。步骤2:元组的操作将上面计算三山五岳的代码中的列表修改成元组,并测试代码,看看有哪些操作无法进行,并总结出元组和列表的不同之处。append()函数无法使用sort()函数无法使用再次测试和列表相关的命令(del)和函数,看看有何区别?结论:所有视图修改元组的命令和函数均无法使用,其余列表可以使用的函数元组也可以使用。步骤3:思考元组用处根据元组的特点,思考在编写程序时有哪些场景可以使用元组?四、字典步骤1:认识字典字典的定义用“{}”把数据括起来,其中每一个元素由键(key)和值(value)组成,键和值之间用英文冒号“:”分开,两者是一种映射关系,在这些元素中,键是唯一的,不可重复。Height={1545:"泰山”,2154.9:"华山”,1300.2:"衡山",2016.1:"恒山",1491.71:"嵩山"}步骤2:字典的使用字典主要用于查找与特定键所对应的值,通过“键”来调用〃值〃,字典中的元素没有固定的顺序,所以不能用下标来表示元素。正确:print(height[1545])错误:print(height[0])步骤3:字典的修改添加操作height[1864.8]="黄山"删除操作delheight[1864.8]请学生亲手操作一下,观察字典的操作和列表的操作有什么不同。步骤4:字典应用使用字典和列表修改上面的五岳程序,使其最后显示具体的山名思考:使五岳程序显示结果不是数字而是山名,有哪些实现方法,不用字典能不能实现,使用字典又如何实现?参考代码:

a.不用字典height=[1545,2154.9,1300.2,2016.1,1491.71,1864.8,1473.8,1056.5]name=[“泰山〃,〃华山”,〃衡山〃,〃恒山〃,〃嵩山”,〃黄山〃,〃庐山〃,〃雁荡山〃]imax=height[0]imin=height[0]isum=Oforiinheight:#由于两个列表有对应关系,不能对其中之一排序,这里用ifi>imax:#for循环术最大值和最小值。imax=ielifi<imin:imin=iisum=isum+iprint("海拔最高:",name[height,index(imax)])#求得imax的值在列表heightprint("海拨最低:",name[height,index(imin)])#里的位置再取冽表name里相print("平均海拔:“,isum/len(height),"来#应位置的元素即为对应的山名。b.使用字典heightdict={1545:“泰山”,2154.9:“华山",1300.2:“衡山",\2016.1:“恒山”,1491.71:"嵩山”,1864.8:"黄山",\1473.8:"庐山”,1056.5:“雁汤山〃}height二口foriinheightdict:height,append(i)height,sort()isum=0foriinheight:isum=isum+iprint("海拔最高:",heightdict[height[len(height)-1]])print("海拔最彳氐:",heightdict[height[0]])print(“平均海拔:",isum/len(height)米")第三环节学以致用一、创意研究引导策略:引导学生将现实生活中成组的数据和本课内容联系起来。如:以上我们学习了列表、元组和字典的相关知识,大家想一想我们生活中有很多需要成组数据的地方,比如课程表、日历等,请思考还有那些类似的应用场景?每个小组讨论**分钟,设计一个使用它们的程序。.程序名称。.为什么要写这个程序,用来解决哪些实际问题?(通讯簿、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论