《Python编程案例教程》786-3(韩海花)教案 项目四 Python第十一次课教案_第1页
《Python编程案例教程》786-3(韩海花)教案 项目四 Python第十一次课教案_第2页
《Python编程案例教程》786-3(韩海花)教案 项目四 Python第十一次课教案_第3页
《Python编程案例教程》786-3(韩海花)教案 项目四 Python第十一次课教案_第4页
《Python编程案例教程》786-3(韩海花)教案 项目四 Python第十一次课教案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

PAGE10PAGE10PAGE9PAGE9《Python编程基础知识》

教案课时分配表章序课程内容课时备注1文档处理122电子表格处理83演示文稿制作44信息检索65新一代信息技术概述106信息素养与社会责任8合计48文旌课堂APP

课题数据容器(三)——开发“诗词大会”游戏课时2课时(90min)教学目标知识技能目标:(1)掌握字典的创建、访问、遍历和基本操作方法。思政育人目标:(1)提高选择合适方法解决不同问题的能力。(2)将中华传统文化融入编程案例中,增强感受诗词之美、诗词之趣的能力。教学重难点教学重点:Python中字典的相关语法;Python中字典的创建、访问、遍历和基本操作方法。教学难点:Python中字典的应用。教学方法案例分析法、问答法、讨论法、讲授法、实训法教学用具电脑、投影仪、多媒体课件、教材教学设计教学过程主要教学内容及步骤设计意图课前任务【教师】布置课前任务,提醒同学通过文旌课堂APP或其他学习软件,完成课前任务请大家自行搜集资料查询“诗词大会”都是什么形式的,并且预习本任务需要的相关知识点。【学生】完成课前任务通过课前任务,使学生了解本次课的重要性,增加学生的学习兴趣考勤

(2min)【教师】清点上课人数,记录好考勤【学生】班干部交假条培养学生的组织纪律性,掌握学生的出勤情况新课预热

(10min)【教师】与学生简单互动,复习回顾上次课的内容等【学生】聆听、互动【教师】课外拓展讲解诗词之美《中国诗词大会》是继《中国汉字听写大会》《中国成语大会》《中国谜语大会》之后,为贯彻落实习近平总书记关于弘扬中华优秀传统文化的指示精神,为让古代经典诗词,深深印在国民大众的脑子里,成为“中华民族文化基因”,而由央视科教频道推出的一档文化类演播益智竞赛节目。《中国诗词大会》以“赏中华诗词,寻文化基因,品生活之美”为宗旨,通过演播室比赛的形式,重温经典诗词,继承和发扬中华优秀传统文化,带动全民重温那些曾经学过的古诗词,分享诗词之美,感受诗词之趣。【教师】概括本次课总体学习内容,让学生大体了解本次课学习内容字典是Python中常用的一种数据存储结构,它由“键-值”对组成,表示一种映射关系,每个“键-值”对称为一个元素。其中,“键”可以是Python中任意不可变数据类型,如数字、字符串、元组等,但不能是列表、集合、字典等可变数据类型;“值”可以是任意数据类型。通过老师与学生的互动,并让学生了解这次课的知识点大致要求问题导入(5min)【教师】提出以下问题:大家有了解过Python中的字典吗?字典与之前C语言课中学的有什么不同?【学生】思考、举手回答【教师】通过学生的回答引入要讲的知识通过问题导入的方法,引导学生主动思考,激发学生的学习兴趣传授新知

(30min)一、字典的创建【教师】讲解Python中的字典的创建1、直接赋值创建字典直接赋值创建字典的语法格式如下。变量名={键1:值1,键2:值2,键3:值3,……}字典的元素放在大括号中,元素之间用逗号分隔,“键”与“值”之间用冒号分隔。例如,创建一个学生信息字典,包括学生学号、姓名和年龄3个元素,可以用下面代码实现。#创建字典stu_infostu_info={'num':'20210101','name':'小蓝','age':10}【学生】聆听、记录、理解2、使用内置函数dict()创建字典使用内置函数dict()可通过其他字典、“(键,值)”对的序列或关键字参数来创建字典。例如,通过下面5种方式使用dict()函数可创建相同的字典。#直接赋值创建字典stu_info1={'num':'20210101','name':'小蓝','age':10}#通过其他字典创建stu_info2=dict(stu_info1)#通过“(键,值)”对的列表创建stu_info3=dict([('num','20210101'),('name','小蓝'),('age',10)])#通过关键字参数创建stu_info4=dict(num='20210101',name='小蓝',age=10)#通过dict和zip结合创建stu_info5=dict(zip(['num','name','age'],['20210101','小蓝',10]))【教师】小拓展zip()函数将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的zip对象。例如:list_str=['a','b','c','d'] #创建列表并赋值list_num=[1,2,3,4] #创建列表并赋值list_new=zip(list_str,list_num) #打包为元组组成的zip对象#用list()函数转换为列表输出,结果为[('a',1),('b',2),('c',3),('d',4)]print(list(list_new))【学生】聆听、记录、理解3、使用fromkeys()方法创建字典在Python中,当所有键对应同一个值时,可使用fromkeys()方法创建字典,其语法格式如下。#创建字典,“值”默认为Nonestu_age1=dict.fromkeys(['小蓝','小舞'])#输出stu_age1,结果为{'小蓝':None,'小舞':None}print(stu_age1)#创建字典,“值”赋为10stu_age2=dict.fromkeys(['小蓝','小舞'],10)#输出stu_age2,结果为{'小蓝':10,'小舞':10}print(stu_age2)【教师】强调以下问题字典中的“键”是唯一的,创建字典时若出现“键”相同的情况,则后定义的“键-值”对将覆盖先定义的“键-值”对。例如:x={'a':1,'b':2,'b':'3'} #直接赋值创建字典xprint(x) #输出字典x,结果为{'a':1,'b':'3'}【学生】聆听、记录、理解【教师】布置题目(1)以下程序的运行结果是¬¬¬________。person1={'身份证号':'110112XXXXXXXX0101','姓名':'王宏','性别':'男','居住地':'北京市XX区XX街道XX小区'} #直接创建person2=dict(person1) #通过其他字典创建person3=dict([('身份证号','110112XXXXXXXX0101'),('姓名','王宏'),('性别','男'),('居住地','北京市XX区XX街道XX小区')]) #通过“(键,值)”对的序列创建person4=dict(身份证号='110112XXXXXXXX0101',姓名='王宏',性别='男',居住地='北京市XX区XX街道XX小区') #通过关键字参数创建person5=dict(zip(['身份证号','姓名','性别','居住地'],['110112XXXXXXXX0101','王宏','男','北京市XX区XX街道XX小区'])) #通过dict和zip结合创建print(person1['姓名'])print(person2.get('姓名'))print(person1)print(person2)print(person3)print(person4)print(person5)(2)以下程序的运行结果是________。person={'身份证号':'110112XXXXXXXX0101','姓名':'王宏','性别':'男','居住地':'北京市XX区XX街道XX小区',}person['居住地']='北京市通州区' #修改居住地 person['电话'] #增加电话print(person)【学生】完成题目【教师】随机点名回答二、字典的访问【教师】讲解Python中的字典的访问1、根据键访问值字典中的“键”可作为下标访问对应的“值”,如果字典中不存在这个“键”则会抛出异常,其语法格式如下。dict[key]其中,dict表示字典名,key表示要查找的键。例如:#创建字典stu_info={'num':'20210101','name':'小蓝','age':10}stu_info['num'] #根据num获取学号,结果为“20210101”stu_info['name'] #根据name获取姓名,结果为“小蓝”【学生】聆听、记录、理解2、使用get()方法访问值在访问字典时,若不确定字典中是否有某个键,可通过get()方法获取,若该键存在,则返回其对应的值,若不存在,则返回默认值,其语法格式如下。dict.get(key[,default=None])其中,dict表示字典名;key表示要查找的键;default表示默认值,如果指定键的值不存在,返回该默认值,当default缺省时,返回None。例如,使用get()方法访问前面定义的stu_info字典,可以用下面代码实现。stu_info.get('name')#使用get()方法获取学生姓名,结果为“小蓝”stu_info.get('sex') #使用get()方法获取学生性别,返回值为Nonestu_info.get('sex','女')#设置返回默认值为“女”,返回值为“女”【教师】演示例4-13程序#创建中文词组列表chinesechinese=['卷心菜','午餐','机器人','天空','花']#创建英文单词列表englishenglish=['cabbage','lunch','robot','sky','flower']#使用dict()和zip()方法生成字典dictionary=dict(zip(chinese,english))word=input('请输入中文词组:') #输入中文词组,并赋给wordprint(dictionary.get(word))#使用get()方法获取word的值并输出【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解三、字典的基本操作【教师】讲解Python中的字典的基本操作与列表相似,Python也提供了大量方法用于字典元素的修改、添加、删除、更新、复制等操作。1、修改和添加元素当以指定“键”为下标给字典元素赋值时,有下面两种含义。(1)若该“键”在字典中存在,则表示修改该“键”对应的值。(2)若该“键”不存在,则表示添加一个新的“键-值”对,即添加一个新元素到字典中。例如:#创建字典stu_info={'num':'20210101','name':'小蓝','age':10}stu_info['age']=11 #修改age的值print(stu_info['age']) #输出修改后的age值,结果为11stu_info['sex']='女' #添加学生性别#输出添加后的字典,结果为{'num':'20210101','name':'小蓝','age':11,'sex':'女'}print(stu_info)【学生】聆听、记录、理解2、删除元素要删除字典中的元素或整个字典,可以使用del命令、clear()方法、pop()方法或popitem()方法。(1)del命令:根据“键”删除字典中的元素,例如:#创建字典stu_info={'num':'20210101','name':'小蓝','age':10}delstu_info['age'] #删除age“键-值”对#输出删除后的字典,结果为{'num':'20210101','name':'小蓝'}print(stu_info)(2)clear()方法:删除字典中的所有元素,其语法格式如下。dict.clear()其中,dict表示字典名。该方法不包含任何参数,也没有返回值。例如:#创建字典stu_info={'num':'20210101','name':'小蓝','age':10}stu_info.clear() #清空字典print(stu_info) #输出清空后的字典,结果为{}(3)pop()方法:删除指定的“键-值”对,并返回该“键”的值,其语法格式如下。dict.pop(key[,default])其中,dict表示字典名;key表示删除的键;default是默认值,当字典中没有要删除的key时,该方法返回指定的默认值。例如:#创建字典stu_info={'num':'20210101','name':'小蓝','age':10}stu_info.pop('age') #删除age“键-值”对,并返回age的值10stu_info.pop('age',11) #无指定键,返回默认值11(4)popitem()方法:随机删除并返回一个“键-值”对,其语法格式如下。dict.popitem()其中,dict表示字典名。该方法无参数,返回值为一个随机的“键-值”对。例如:#创建字典stu_info={'num':'20210101','name':'小蓝','age':10}stu_info.popitem()#随机删除并返回某“键-值”对,如('age',10)#输出字典,结果为{'num':'20210101','name':'小蓝'}print(stu_info)【学生】聆听、记录、理解【教师】布置题目(1)以下程序的运行结果是_________。person={'身份证号':'110112XXXXXXXX0101','姓名':'王宏','性别':'男','居住地':'北京市XX区XX街道XX小区','电话':}delperson['电话'] #删除电话print(person)person.popitem() #随机删除元素print(person)【学生】完成题目【教师】随机点名回答3、更新字典update()方法用于将新字典的“键-值”对一次性全部添加到当前字典中,如果两个字典中存在相同的“键”,则以新字典中的“值”更新当前字典,其语法格式如下。dict.update(dict1)其中,dict表示当前字典,dict1表示新字典。例如:#创建字典stu_infostu_info={'num':'20210101','name':'小蓝','age':10}#修改age的值,同时添加新元素stu_info.update({'age':11,'sex':'女'})#输出字典,结果为{'num':'20210101','name':'小蓝','age':11,'sex':'女'}print(stu_info)【教师】演示例4-14程序dictionary={'卷心菜':'cabbage','午餐':'lunch','机器人':'robot','天空':'sky','花':'flower'} #创建字典dictionary并赋值print(dictionary) #输出dictionarydictionary.pop('卷心菜') #删除“卷心菜”键-值对print(dictionary) #输出dictionary#添加新字典dictionary.update({'公园':'park','桥':'bridge'})print(dictionary) #输出dictionarydictionary['午餐']=['lunch','nooning'] #修改“午餐”的值print(dictionary) #输出dictionary【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解4、复制字典复制字典可使用copy()方法,返回字典的浅复制,其语法格式如下。dict.copy()其中,dict表示需要复制的字典,该方法无参数,返回一个新字典。例如:#创建字典stu_infostu_info={'num':'20210101','name':'小蓝','age':10}stu_info1=stu_info.copy() #复制stu_info,并赋给stu_info1#输出stu_info1,结果为{'num':'20210101','name':'小蓝','age':10}print(stu_info1)【教师】小拓展在Python中,可使用3种方法复制字典:直接赋值、浅复制和深复制。(1)直接赋值:复制对象的引用。(2)浅复制:使用copy()方法复制父对象及其子对象的引用。(3)深复制:使用deepcopy()方法完全复制父对象及其子对象,此方法包含在copy模块中。【教师】演示例4-15程序importcopy #导入copy模块#创建字典dictionary并赋值dictionary={'卷心菜':'cabbage','午餐':['lunch','nooning']}dictionary1=dictionary #直接赋值dictionary2=dictionary.copy() #浅复制dictionary3=copy.deepcopy(dictionary) #深复制#将dictionary中键为“卷心菜”的值改为“pamphrey”dictionary['卷心菜']='pamphrey'#移除dictionary中键为“午餐”的值列表中的“nooning”dictionary['午餐'].remove('nooning')print('dictionary=',dictionary) #输出dictionaryprint('dictionary1=',dictionary1) #输出dictionary1print('dictionary2=',dictionary2) #输出dictionary2print('dictionary3=',dictionary3) #输出dictionary3【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解【教师】布置题目(1)以下程序的运行结果是_______。person={'身份证号':'110112XXXXXXXX0101','姓名':'王宏','性别':'男','居住地':'北京市XX区XX街道XX小区'}person.update({'居住地':'北京市通州区XX街道XX小区','电话':}) #更新字典print(person)person2=person.copy() #复制字典print(person2)(2)以下程序的运行结果是________。family_age={"grandmather":65,"grandfather":68,"mather":38,"father":38,"child":10}old=family_age["grandmather"]print("grandmotheris"+str(old)+".")【学生】完成题目【教师】随机点名回答四、字典的遍历【教师】讲解Python中字典的遍历当字典包含大量元素时,可使用遍历的方法对元素进行访问,遍历字典有以下3种方法。1、遍历字典中所有的“键-值”对使用item()方法可遍历字典中所有的“键-值”对,该方法以dict_items形式返回可遍历的“(键,值)”元组,其语法格式如下。dict.items()其中,dict表示字典。【学生】聆听、记录、理解2、遍历字典中所有的键当不需要使用字典中的值时,可使用keys()方法只遍历字典中的键,该方法以dict_keys形式返回字典中所有的键,其语法格式如下。dict.keys()其中,dict表示字典名。【学生】聆听、记录、理解3、遍历字典中所有的值当只需要使用字典中的值时,可使用values()方法,该方法以dict_values形式返回字典中所有的值,其语法格式如下。dict.values()其中,dict表示字典名。【教师】强调以下问题dict_items、dict_keys和dict_values是Python的内部数据类型,专用于表示字典的键值对、键和值,可使用list()函数将其转换为列表。【教师】演示例4-16程序dictionary={'卷心菜':'cabbage','午餐':'lunch','机器人':'robot','天空':'sky','花':'flower'} #创建字典dictionary并赋值print('中英文字典中所有中文词组及其对应的英文单词:')foritemindictionary.items(): #遍历字典所有的“键-值”对print(item) #输出每个“键-值”对print('中英文字典中所有中文词组:')forchineseindictionary.keys(): #遍历字典所有的键print(chinese,end='') #输出每个键print('\n中英文字典中所有英文单词:')forenglishindictionary.values(): #遍历字典所有的值print(english,end='') #输出每个值【学生】观察运行结果并讨论【教师】讲解程序(主要代码)【学生】聆听、记录、理解【教师】布置题目(1)以下程序的运行结果是_______。stu_class={'赵':'优','钱':'良','孙':'中','李':'及格'}forname,reportinstu_class.items():print(name,'的成绩是',report)(2)以下程序的运行结果是______。family_love={"grandmather":"dancing","grandfather":"computer","mather":"readingbook","father":"cooking","child":"playingpingpang"}formember,hobbyinfamily_love.items():print(member.title()+"."+hobby)【学生】完成题目【教师】随机点名回答通过教师的讲解和演示,使学生了解Python中的字典的使用任务实施(15min)【教师】带领学生完成任务三✈【教师】提出任务《中国诗词大会》是一档文化类演播室益智竞赛节目,竞赛形式多样,如选择、填空、诗词识别、飞花令、诗词接龙等。本任务要求大家编写Python程序,利用字典设计题库,开发简单的“诗词大会”游戏。【教师】随机点名回答time()函数用于获取系统当前的时间戳,即从格林尼治时间(GMT,1970年1月1日0时0分0秒)开始的浮点秒数。它包含在time模块中,使用时须导入,且须通过模块名调用。例如:importtime #导入time模块time1=time.time() #time1为1621413300.0232565【学生】思考、讨论一、进行任务分析:完成本任务,须首先设计题库,然后在规定时间内循环随机出题,判断输入的答案是否正确,并统计答对问题次数,如果答题时间到,则退出循环,结束答题。具体实现步骤如下。(1)创建字典question_bank保存题库,问题为“键”,正确答案为“值”。问题使用元组(详见任务四)保存,题干和选项为元组的元素。(2)使用keys()方法获取question_bank的所有“键”(问题),然后使用list()方法转换为列表questions。(3)创建变量time1、number和count。time1表示开始时间,使用time模块的time()函数获取;number保存问题在questions列表中的索引,初始赋值为空列表;count表示统计答对问题次数,初始赋值为0。(4)使用while循环,判断条件为True,在循环中进行以下操作。①使用randint()函数生成一个0~len(questions)−1的随机整数index,作为列表的索引。判断index是否在number中(即该索引对应的问题已经出现过),如果是则使用continue结束本次循环,否则将index添加到number中。②使用for循环输出questions[index]中的元素。③使用input()函数输入答案,并赋给answer。然后判断answer与该问题的答案是否相等,如果是则输出答对提示,并使count加1,否则输出答错提示。④使用time模块的time()函数获取当前时间,并赋给time2。然后计算time2和time1的差值delta_T,判断delta_T是否大于规定时间,如果是则输出count,并退出循环。二、参考代码:01、importrandom #导入random模块02、importtime #导入time模块03、#创建字典question_bank,问题为“键”,答案为“值”04、question_bank={05、('点字成诗(九宫格),从下面九个字中识别一句诗词。','花多又','知逢时','雨少落'):'花落知多少',06、('点字成诗(十二宫格),从下面十二个字中识别一句诗词。','柳生一白','云亮有家','花处人暗'):'白云生处有人家',07、('“会当凌绝顶,一览众山小。”描写的是哪座山?','A.庐山','B.黄山','C.泰山'):'C',08、('请问:《望庐山瀑布》的作者是下面哪位诗人?','A.王维','B.李白','C.杜甫'):'B',09、('填空:窗含()岭千秋雪。','A.东','B.南','C.西'):'C',10、('请问:名句“海上生明月,天涯共此时”出自下面哪首诗?','A.杜甫《月夜忆舍弟》','B.张九龄《望月怀远》','C.李白《闻王昌龄左迁龙标遥有此寄》'):'B',11、('请问:成语“寸草春晖”出自下面哪首诗?','A.白居易《赋得古原草送别》','B.苏轼《春夜》','C.孟郊《游子吟》'):'C',12、('请问:下面成语中哪个不是出自杜牧的诗?','A.豆蔻年华','B.折戟沉沙','C.壮志未酬'):'C',13、('填空:()十三余,豆蔻枝头二月初。',):'娉娉袅袅',14、('填空:花径不曾()客扫,蓬门今始为君开。',):'缘',15、('请问:中国古代有四大美女,请问宋代王安石《明妃曲》写的是其中哪一位?','A.西施','B.王昭君','C.貂蝉'):'B',16、('请根据下面线索说出一位诗人?','A.宋代一位著名的状元','B.中国历史上的一位民族英雄','C.创作有名句“人生自古谁无死,留取丹心照汗青。”'):'文天祥',17、}18、#获取question_bank的所有键,并转换为列表19、questions=list(question_bank.keys())20、number=[] #创建空列表number,保存题目的索引21、count=0 #创建变量count,表示答对的问题数22、time1=time.time() #获取开始时间time123、whileTrue: #循环24、#生成0~len(questions)-1的随机整数index25、index=random.randint(0,len(questions)-1)26、ifindexinnumber: #如果index在number中27、continue #结束本次循环28、number.append(index) #将index添加到number中29、foriteminquestions[index]:#遍历问题元组中的元素30、print(item) #输出问题31、answer=input('请输入正确答案:')#输入答案32、ifanswer==question_bank[questions[index]]:#如果答案正确33、print('恭喜你,答对了!') #输出答对提示34、count+=1 #count加135、else: #如果答案不正确36、print('很遗憾,答错了!') #输出答错提示37、time2=time.time() #获取当前系统时间time238、delta_T=int(time2-time1)#计算答题总时间delta_T39、ifdelta_T>30: #如果delta_T大于30s40、#输出答题结束提示,并输出count41、print('时间到,答题结束!您本次答对',count,'道题')42、break #退出循环三、代码运行结果:填空:()十三余,豆蔻枝头二月初。请输入正确答案:娉娉袅袅恭喜你,答对了!请问:名句“海上生明月,天涯共此时"出自下面哪首诗?A.杜甫《月夜忆舍弟》B.张九龄《望月怀远》C.李白

温馨提示

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

评论

0/150

提交评论