版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python程序设计项目九定义函数与调用——模块化任务计算期末成绩学校:东莞市电子科技学校
主讲教师:XXXPython程序设计职业素养.1.提高学生良好的审美观和艺术欣赏能力;2.增强团队自主探究的学习意识;3.提高学生感悟生活美的能力;4.增强爱国爱校的情怀。本节重难点.1.掌握函数的定义;2.掌握函数的调用;3.掌握lambda函数的使用。
目录/directorys01任务目标0101任务描述020203任务分析020205相关知识020202任务小结020206任务实施020204任务目标
本任务主要通过期末成绩的计算任务,理解函数的作用,掌握函数的定义、调用以及lambda函数的使用。Python定义函数与调用思维导图如图9-1-1所示。Python程序设计图9-1-1Python定义函数与调用思维导图Python程序设计任务描述
任务描述现X大专Python的期末测评成绩出来了,期末总评成绩由三个部分构成:平时出勤成绩、期中和期末成绩,每个部分占不同的比例。现在,请你设计一个程序,输入同学们的Python成绩,得到该科目班级前三名的同学的名单和成绩。任务分析根据描述,我们可以知道,本任务要计算每个同学的加权后的总成绩,然后根据成绩高低取前三名。想要计算同学们的加权成绩就需要了解每部分的占比,经过进一步的沟通,我们了解到Python的平时考勤占30%,期中成绩占比30%,期末成绩占比40%。通过以上信息可以整理得到:首先,我们需要输入班级同学每科的平时成绩、期中和期末成绩;然后,计算每位同学Python科目的加权总成绩,接着对总成绩进行排序;最后根据排序结果得到班级排名前三的同学的成绩。
Python程序设计相关知识
(1)函数函数是组织好的,可重复使用的,用来实现单一或相关联某一功能的代码段。在编写大型的应用程序时,通常有很多的操作或者功能有相同或相似的代码,如果每次都写一遍重复的代码,不但费时费力、容易出错,而且交给别人也很麻烦,为了避免代码冗杂、便于维护,我们将这些重复使用的代码以固定的格式组织成一个单元完成相应的功能,这个单元就称为“函数”。通过函数名,我们就可以在不同地方多次调用该函数,而不需要再重复编写这些代码。在Python中,函数主要分为三类:一类是系统提供的,即Python中的标准函数,也称“内置函数”,如inPut,Print(),max(),len()等;第二类是由其他程序员编写的,我们可以直接拿来用,比如一些开源的函数库BeautifulSouP,NumPy等;第三类是由用户自己编写的,通常成为自定义函数。这章我们主要学习第三种,自定义函数的编写和使用。(2)定义使用def语句来定义函数。简单函数的定义语法格式如图9-1-2所示图9-1-2简单函数的定义语法格式
Python程序设计①函数名:从语法角度来看,函数名只要是一个合法的标识符即可;从程序的可读性角度来看,一般函数名应该由一个或多个有意义的单词连缀而成,每个单词的字母全部小写,单词与单词之间使用下画线分隔。函数名本质上就是函数的内存地址:一是方便被引用,二是可被当作容器类型(比如列表)的元素,三是可以当作函数的参数和返回值。②形参列表:定义该函数可以接收的参数。形参列表由多个形参名组成,多个形参名之间以英文逗号“,”隔开,也叫“形参”。③函数体,由多条语句组成的代码块,在实际编写中,要注意有合适的缩进。④return语句可以没有,若没有则返回None。如果有,一旦执行,则函数运行结束,不再执行return之后的语句。⑤函数说明文档,可以没有,主要对函数的描述,用于日后程序代码的调用和维护,内容包括函数的功能、传递的参数的作用,类型等。⑥注意:函数的定义必须挡在函数调用前,否则编译器会找不到该函数报错。【实例9-1-1】定义一个欢迎新同学的函数,如图9-1-3所示。图9-1-3定义欢迎新同学的函数Python程序设计(3)调用调用函数也就是执行函数。要调用一个函数,必须使用函数名后跟圆括号的方式才能调用函数。调用函数时,按照函数定义的参数顺序,提供相应个数和类型的参数,每个参数之间用逗号“,”分隔。需要注意的是,必须定义参数在前,调用在后。调用格式:[返回值]=函数名([实参值])形参:定义函数时,小括号中的参数列表,是用来接收参数用的,在函数内部作为变量使用。实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的。注意:Python在做语法和词法分析检查的时候,并不会对参数类型进行检查,在执行过程中,如果参数类型不符合函数内部运行机制,才会弹出相应的错误。【实例9-1-2】调用欢迎新同学的函数welcome(),欢迎韩梅梅同学,
如图9-1-4所示。(4)返回值return语句用于表示函数执行到此结束,并且返回return后面的数据。有时候,函数不需要返回任何值,此时可以不需要return语句,它在后台默认返回个None,并且不给任何提示。但是更多的时候我们还是需要返回一些东西。一旦函数执行过程遇到return语句,那么return之后函数体内的所有代码都会被忽略,直接跳出函数体。那怕你现在正在一个循环内。Python程序设计【实例9-1-3】return语句示例,如图9-1-5所示。return可以返回的数据呢包括以下几种。①什么都不返回,仅仅:return。②数字/字符串/任意数据类型:return'hello'。③一个表达式:return1+2。④一个判断语句:return100>99。Python程序设计⑤一个变量:returna。⑥一个函数调用:returnfunc()。⑦返回自己!:returnself。⑧多个返回值,以逗号分隔:returna,1+2,"hello"。简而言之,函数可以return几乎任意Python对象。(5)lambda表达式lambda表达式又称“匿名函数”,常用来表示内部仅包含1行表达式的函数。lambda表达式的语法格式如下:name=lambda[list]:表达式其中,定义lambda表达式,必须使用lambda关键字;[list]作为可选参数,等同于定义函数是指定的参数列表;value为该表达式的名称。Python程序设计【实例9-1-4】add函数定义如下,它只有一行代码,如图9-1-6所示。使用lambda表达式,可以表示为:add=lambdax,y:x+ylambda表达式,可以理解是一个简单函数的简写版本。相比普通,有以下2个优势。①使用lambda表达式让代码更加简洁。②由于lambda表达式可以在用完之后立即释放,可以提高程序执行的性能。实战任务02Python程序设计为此我们可以分解为4个任务去实施。每个任务就是一个功能,可以使用函数来实现,例表9-1所示。任务名功能代码示例步骤1输入班级同学的Python总评的各部分成绩name=inPut('输入姓名:');Print('输入Python考勤成绩,期中考试成绩,期末考试成绩')score1,score2,scre3=inPut('形如80,70,90:').sPlit(',')步骤2计算每位同学们的总评成绩score=score1*0.3+score2*0.3+scre3*0.4步骤3对全班成绩进行排序nameScores=sorted(nameScores.items(),key=lambdax:x[1],reverse=True)步骤4输出前三名同学的姓名和成绩fori,iteminenumerate(nameScoresList):name=item[0]score=item[1]Print('排名:',i,'name:',name,'成绩:',score)Python程序设计步骤1:输入班级同学的姓名和Python总评的各部分成绩,我们创建了函inPutNameScore来实现代码如图9-1-7所示。图9-1-7输入姓名及部分成绩为了更友好的输入,我们一次性输入3部分成绩,使用sPlit()函数,将各部分成绩分开,最后返回姓名和各部分成绩。步骤2:创建calcPython()来计算每位同学的总评成绩,3个参数传入总评的各部分成绩,函数内部计算加权成绩,并返回。代码如图9-1-8所示。Python程序设计步骤2:创建calcPython()来计算每位同学的总评成绩,3个参数传入总评的各部分成绩,函数内部计算加权成绩,并返回。代码如图9-1-8所示。图9-1-8计算每位同学们的总评成绩Python程序设计步骤3:创建函数sortPython()对全班成绩进行排序,传入全班的姓名和加权成绩的字典,我们使用sorted函数来进行排序。需要注意的是,这里reverse=True,采用倒序,由高到低进行排序。具体代码如图9-1-9所示。图9-1-9对全班成绩进行排序Python程序设计步骤4:创建PrintPythonScore()函数来实现输出成绩,使用enumerate()函数遍历姓名分数字典,最后输出排名、姓名和成绩。代码如图9-1-10所示。图9-1-10输出前三名同学的姓名和成绩Python程序设计(1)完整源代码源代码主要分为两个部分,第一部分,主要包括该任务主要的4个功能函数;第二部分是在man()函数中,对4个功能函数的调用。具体的完整代码如图9-1-11所示。图9-1-10输出前三名同学的姓名和成绩definPutNameScore():'''输入学生的姓名和成绩:return:返回姓名和Python的各部分成绩name=inPut('输入姓名:');Print('输入Python考勤成绩,期中考试成绩,期末考试成绩')(score1),score2,scre3=inPut('形如80,70,90:').sPlit(',')returnname,float(score1),float(score2),float(scre3)defcalcPython(score1,score2,scre3):'''根据各部分成绩占比,计算加权成绩:Paramscore1:第一部分成绩,平时出勤成绩:Paramscore2:期中考试成绩:Paramscre3:期末考试成绩:return:返回Python的期末总评成绩'''score=score1*0.3+score2*0.3+scre3*0.4returnscorePython程序设计图9-1-10输出前三名同学的姓名和成绩defsortPython(nameScores):'''对班级同学的成绩进行排序:Pa'''nameScores=sorted(nameScores.items(),key=lambdax:x[1],reverse=True)returnnameScoresdefPrintPythonScore(nameScores):'''输出全班的成绩:ParamnameScoresList::return:'''ameScores)ifisinstance(nameScores,dict):nameScoresList=list(nameScores.items())fori,iteminenumerate(nameScoresList):name=item[0]score=item[1]Print('排名:',i,'name:',name,'成绩:',score)if__name__=='__main__':nameScores={}#循环输入班级同学们的成绩,并计算每一个同学的总评成绩while1:#输入姓名和各部分成绩name,score1,score2,scre3=inPutNameScore();Python程序设计图9-1-10输出前三名同学的姓名和成绩#计算总评成绩PythonScore=calcPython(score1,score2,scre3)#同学们的Python成绩放在一个字典中,方便后面的排序nameScores[name]=PythonScoreflag=inPut('是否继续输入,Yy/Nn?::')ifflag.uPPer()!='Y'andflag.uPPer()!='N':flag=inPut('重新输入,Yy/Nn?::')ifflag.uPPer()=='N':break;else:Pass;#Print(nameScores)Print('*'*20,'排序之前')PrintPythonScore(nameScores)#全班总评成绩进行排序nameScores=sortPython(nameScores)163Print('*'*20,'排序之后')PrintPythonScore(nameScores)Python程序设计(2)运行结果对代码进行调试,和少许修改后,输入了4各同学的Python的各部分成绩,我们可以看到经过加权处理后,算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年免疫试剂出库核对培训考核试题附答案
- 粤教版高 一 信息技术 必修一教学设计:1.1 信息及其特征
- 个人理财易错试题及权威答案
- 桂美版六年级下册第1课中国古代工艺美术欣赏教学设计
- 江苏省丹徒区世业实验学校七年级美术教学设计
- 2026年氧化铝生产车间安全考试题库及答案
- 小学低段写字教学问题与改进策略备课教案
- 学校产品测试题全解及答案
- 2026年天津交通职业学院单招职业技能考试题库及答案
- 2026年生态环境行政处罚办法案例试题
- 卫生外科患者疼痛管理新进展
- 2026届北京西城区小升初数学分班考试全真模拟卷3套-含答题卡答案详解评分标准错题复盘表
- 2026语文新教材五年级上册必背内容及打卡表
- 新时代陕西省立德树人工作指南细则
- 广州数控 GSK980TDc 车床CNC数控系统使用手册(完整版实操手册)
- 2025~2026学年河北石家庄市第八十一中学度上学期九年级英语1月开学收心自测
- 2026四川宜宾天原海丰和泰有限公司招聘91人笔试历年常考点试题专练附带答案详解
- 感染性腹泻诊疗指南
- 头晕诊疗指南(2026年版)基层规范化诊疗
- 广东省学校财务审批制度
- 颈髓损伤患者的康复治疗康复训练
评论
0/150
提交评论