版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ADDINCNKISM.UserStyle教案首页课序10学时2周次教学内容第6章函数---函数定义、函数调用和返回值、函数参数、lambda表达式教学目标知识理解函数的作用,掌握函数的定义,掌握函数的调用方法,理解函数返回值的意义,掌握位置参数、默认值参数、可变长度参数、关键字参数的定义,理解形参和实参的含义以及传递规则,掌握lambda表达式的使用场合和编写规则。能力能够正确定义函数名、函数参数、函数体和函数返回值,能够根据不同需求,正确选择位置、默认值、可变长度、关键字参数并灵活使用,学会lambda表达式的编写素养树立知行合一、科技报国的价值导向,培养守正创新、刚柔并济的意识教学重点函数定义和函数调用、函数形参和实参、函数的参数类型、lambda表达式教学难点形参和实参传递规则、函数参数类型教学方法手段讲述法+案例式教学+讨论法教学组织方式1.内容导入2.知识点讲解3.综合案例与纠错4.小结5.作业课后反思教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532(以2课时为单元)教学设计一、内容导入有一个学生期末成绩管理系统,完成对45个学生成绩的求和和排序工作,现在需要对50个学生成绩进行求和和排序,如何做?100个呢?二、内容介绍(一)函数定义函数(function)是指一个有命名的、执行具体功能的语句序列。在定义函数的时候,需要指定函数的名字和语句序列。Python语言中函数的声明和定义合为一体,函数的定义方法如下:def函数名([形参列表]): #[]表示可有可无语句序列 #函数要完成功能的实现[return表达式] #函数的返回值,可以没有注意:函数的规范命名。Python解释器并不对参数类型进行检查,建议先对函数参数进行合法性检查,然后再编写正常的功能代码。(二)函数调用和返回值形参:“形式参数”(简称形参),起到占位的作用。实参:函数调用时,函数名后面括号中的参数称为“实际参数”(简称实参),函数调用时,实参传递给形参,这是一个单向传递。传值:函数调用时,实参的值复制一份给形参,形参和实参是两个独立的内存单元,修改形参不会影响实参。如果实参是整数、实数、复数等基本类型,或者是元组、字符串这样的不可变类型的数据,那么采用传值方式。传地址:函数调用时,实参的内存首地址传递给形参,形参和实参指向同一块内存地址,修改形参会影响实参。如果实参是可变序列(列表、字典、集合等),并且在函数内部使用下标或可变序列自身的方法增加、删除或修改形参元素,那么采用传地址方式。函数的返回值:函数的返回值类型和return语句返回的表达式类型一致。如果函数没有return语句,或者有return语句但是没有执行到,或者执行了不返回任何值的return语句,解释器都会认为该函数返回空值None。函数可以返回一个或者多个值,返回值是多个时,会自动打包成元组的形式返回。(三)函数参数位置参数(positionalargument)最常用的形式,调用函数时实参和形参的顺序必须严格一致,并且实参和形参的数量必须相同。defget_menu(food,cigarette,wine): print("主食:",food,"香烟:",cigarette,"白酒:",wine)#实参“面条、红塔山、郎酒”依次传递给形参food、cigarette和wineget_menu("面条","红塔山","郎酒") 默认值参数(defaultargument)指在函数定义时为某个参数指定的一个默认值。如果在调用该函数时没有为该参数提供具体的值,那么这个参数就会自动采用其默认值。定义带有默认值参数的函数时,任何一个默认值参数右边都不能再出现位置参数。默认值参数是在函数定义时确定值的,只会被初始化一次。因此,对于列表、字典这样可变类型的默认值参数,可能会导致逻辑错误。defget_default(arg,result=[]): #result为默认值参数 result.append(arg) #为默认值参数添加元素 print(result)get_default(3,[1,2]) #输出:[1,2,3]get_default(3) #参数result使用默认值[]。输出:[3]get_default(4) #参数result已初始化过了,输出:[3,4]关键字参数(keyword-onlyargument)在函数调用时通过关键字(即形参名称)来指定参数值的方式,参数的顺序变得不再重要,只需确保形参名称正确即可。该参数是指调用函数时的参数传递方式,与函数的定义无关。可以同时使用位置参数和关键字参数,要确保位置参数出现在关键字参数的前面。可变长度参数在函数定义时可以使用个数不确定的参数,同一个函数可以使用不同个数的参数来调用。这使得函数更加通用,适用于多种情况。可变长度参数主要有两种形式:在参数名前加*或**。*用来接收任意数量的位置参数并将其放在一个元组中。**用来接收可变数量的关键参数并将其存放到一个字典中。lambda表达式lambda表达式可以用来声明匿名函数,也就是没有函数名字,临时使用的函数。lambda表达式特点是没有函数名、功能简单、只使用一次,本质上还是函数。lambda表达式使用关键字lambda定义,基本形式为:lambda<函数参数>:<返回值>lambda表达式作为sorted、map、filter和reduce等内置函数的参数。f=lambdax,y,z:max(x,y,z)list_a=[1,2,3,4,5]list(map(lambdax:x+10,list_a))三、内容小结
函数是面向过程编程的基本单位,使用函数可以提高函数的复用性和一致性。定义函数使用def,函数形参没有类型限制,通过return语句将函数的值返回给调用者。函数形参有位置参数、默认值参数和可变长度参数,调用函数时还可以使用关键字参数。要根据实际需要,灵活选择函数参数。Lambda表达式适合使用一次的函数快捷定义。四、作业1.编写函数,判断一个整数是否为素数,并编写主程序调用该函数。2.编写函数,接收一个字符串,分别统计大写字母、小写字母、数字、其他字符的个数,并以元组的形式返回结果。3.编写函数,模拟内部函数sum()。4.编写函数,模拟内部函数sorted()。课堂组织【教师活动】结合列表定义、增加和删除元素、排序等易错点进行案例设计和板书推导【学生活动】编写程序:输入一组学生成绩,按照从高到低进行排序。随堂练习:设计10道关于列表和元组的测试题,要求学生进行线上测试,针对出现的错误,进行详细分析和讲解ADDINCNKISM.UserStyle教案首页(以2课时为单元)课序11学时2周次教学内容第6章函数——递归函数、生成器函数、内置函数和模块函数、变量作用域教学目标知识掌握递归函数的定义,理解递归函数的缺点,熟悉生成器函数定义和调用,掌握常用内置函数的功能、函数名和参数,掌握random模块中的常用随机数函数,熟悉math模块中的常用函数,理解全局和局部变量作用域。能力能够正确编写递归函数,能够编写基本的生成器函数,学会常见类型转换函数、排序函数、反转函数、映射函数、过滤函数、枚举函数的使用,能够正确调用math和random标准库的常见函数,能够根据实际情况,合理使用局部和全局变量素养理解局部与整体之间的辩证关系,培养大局意识教学重点递归函数、局部变量和全局变量、random模块中的随机数函数、常用内置函数教学难点递归函数、生成器函数、局部和全局变量、随机数函数、map、sorted、filter、enumerate、zip教学方法手段讲授法+案例教学+讨论法+启发式教学教学组织方式1.内容导入2.知识点讲解3.案例实战、测试4.小结5.作业课后反思教学环节课程引入新课讲解课堂讨论每课小结布置作业时间分配(以分钟计算)575532教学设计一、内容导入求数列11135917...第20项。二、内容介绍(一)递归函数直接或者间接调用自身的函数称为递归函数。递归是一种分而治之的程序设计技术,它将一个复杂规模的问题转换成一个与原问题相似的小规模问题进行求解,给出一个直观、简单的解决方案。递归函数的特点如下:使用选择结构将问题分成不同的情况有一个或多个基本问题(递归结束条件),基本问题可以直接得出结果非基本问题会递归调用自身,每次递归调用会不断接近基本问题,直到变成就基本问题,就可以结束循环每次递归问题的性质不变deff(n):ifnin{1,2}:#基础问题可以直接得出答案returnnelse: #递归条件returnf(n-1)+f(n-2) #递归公式虽然递归程序易于编写,但是递归过程中存在大量的重复运算,这在效率上会有一定的损失。能不用递归方式的时候,尽量使用迭代方式来实现。如果非要用递归方式,可以使用缓存机制来实现。deff2(n):ifnin{1,2}:returnnelse:a,b=1,2 #第1、2项的值foriinrange(3,n+1): #控制第3项后的值计算a,b=b,a+b #迭代公式returnb生成器函数包含yield语句的函数称为生成器函数。生成器函数返回数据时需要使用yield语句,生成器函数可以产生一个迭代器对象,从而实现在需要时生成数据的功能。生成器函数最明显的特征就是在函数内部有一个或者多个yield语句,yield语句不会结束函数的执行,而是返回一个中间的结果给调用者,之后会暂停或挂起后面代码的执行。每次调用生成器函数,它都会返回yield语句后的值,并保存函数的执行状态。下次调用时,函数会从上次yield的位置继续执行,直到遇到下一个yield语句。下次通过生成器对象的__next__()方法、内置函数next()、for循环遍历生成器对象元素等方式显式获取数据时,它会准确地从离开地方继续执行。defmy_range(first=0,last=10,step=1): number=first whilenumber<last: yieldnumber #返回中间值并暂停,下次调用产生新值 number+=stepranger=my_range(1,6)forxinranger: #迭代生成器对象 print(x,end='\t') #输出:12345内置函数函数名说明bin(number)把整数number转换为二进制字符串表示形式float(x)把整数或字符串x转换为浮点数int(x[,d])返回小数(float)、分数(Fraction)或高精度实数(Decimal)x的整数部分,或把d进制的数字字符串x转换为十进制并返回,d默认为十进制hex(number)把整数number转换为十六进制字符串表示形式oct(number)把整数number转换为八进制串字符串表示形式chr(i)返回Unicode码点i对应的字符,0<=i<=0x10fffford(c)返回字符c的Unicode码点str(obj)把对象obj转换为字符串isinstance(obj,type)测试对象obj是否属于指定类型(如果有多个类型,那么就需要放到元组中)type(obj)返回对象obj的类型max(x)、min(x)返回可迭代对象x中的最大值、最小值,要求x中的所有元素之间可以比较大小,允许指定排序规则和x为空时返回的默认值len(obj)返回对象obj包含的元素个数enumerate(iterable)返回包含元素形式为(0,iterable[0]),(1,iterable[1])...的迭代器对象filter(func,seq)返回filter对象,其中包含序列seq中使得单参数函数func返回值为True的那些元素。如果函数func为None则返回包含seq中等价于True的元素的filter对象list(x)、set(x)、tuple(x)、dict(x)把可迭代对象x转换为列表、集合、元组或字典并返回,或生成空列表、空集合、空元组、空字典zip(seq1[,seq2[...]])用于将多个可迭代对象(如列表、元组等)中对应位置的元素打包成一个元组,并返回由这些元组组成的迭代器。最终结果中包含的元素个数取决于所有可迭代对象中最短的那个range([start,]end[,step])返回range对象,其中包含左闭右开区间[start,end)内以step为步长的整数map(func,*iterables)将可迭代对象iterables的每一个元素依次作为参数映射到函数func上。该函数返回一个迭代器对象(由func的返回值组成)reversed(seq)返回seq(可以是列表、元组、字符串、range以及其他可迭代对象)中所有元素逆序后的迭代器对象sorted(iterable,key=None,reverse=False)返回排序后的列表,其中iterable表示要排序的序列或迭代对象,key用来指定排序规则或依据,reverse用来指定升序或降序。该函数不改变iterable内任何元素的顺序sum(x,start=0)返回元素类型是数值的可迭代对象的每个元素之和,其中start指定加法的起始值突出高阶函数map、sorted、sum、filter、zip等使用举例。math标准库函数名说明示例fabs(x)以小数类型返回x的绝对值math.fabs(-7)结果是7.0ceil(x)返回x向上取整的结果math.ceil(2.3)结果是3floor(x)返回x向下取整的结果math.floor(2.8)结果是2factorial(x)返回x的阶乘math.factorial(3)结果是6exp(x)返回e的x次方math.exp(1)结果是2.718281828459045log(x[,base])返回以base为底x的对数;省略base参数,则返回x的自然对数math.log(2)结果是0.6931471805599453pow(x,y)返回xy的结果math.pow(2,3)结果是8.0hypot(x,y)返回欧几里得范数math.hypot(1.1,2.2)结果是2.459674775249769sin(x)cos(x)tan(x)返回x的正弦值、余弦值、正切值,x以弧度表示math.sin(math.pi/2)结果是1.0math.cos(math.pi)结果是-1.0math.tan(math.pi/4)返回0.9999999999999999asin(x)acos(x)atan(x)返回x的arcsin、arccos、arctan的以弧度表示的值math.asin(1)/math.pi返回0.5math.acos(-1.0)/math.pi返回1.0math.atan(1.0)/math.pi返回0.25degrees(x)将x从弧度值转换为角度值math.degrees(math.pi)返回180.0radians(x)将x从角度值转换为弧度值math.radians(180)返回3.141592653589793gcd(a,b)返回a和b的最大公约数math.gcd(16,4)返回4trunc(x)返回实数x被截断后的整数部分math.trunc(-12.6)返回-12modf(x)返回实数x的小数部分和整数部分math.modf(3.5)返回(0.5,3.0)(五)random标准库random() 返回[0,1)区间内的一个随机小数;uniform(a,b) 返回[a,b]区间内的一个随机小数;randint(a,b) 返回[a,b]区间内的一个随机整数;randrange([start],end,[step]) 返回[start,end)区间内的一个整数,start和step默认都是1;choice(seq) 随机返回序列seq中的一个元素 ;choices(seq,weights,k) 从序列seq中随机选择多个元素,可以指定选择的次数k,还可以指定每个元素被选择的权重;shuffle(x) 将可变序列的所有元素随机排列;seed([x]) 改变随机数生成器的种子,x默认是系统时间。确定x值,可以确保每次生成的随机数一致(六)变量作用域变量起作用的代码范围称为变量的作用域,不同作用域内变量名可以相同,互不影响。Python在查找变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 郑州地区就业指南
- 网络技术职业方向
- 安全生产厂级管理讲解
- 记账实操-分包费会计分录
- 煤炭开采合同2026年环保条款
- 3.1人须有自尊课件 2025-2026学年统编版道德与法治七年级下册
- 央国企动态系列报告之61:央国企原创技术策源地主要分布在哪些领域
- Oee考试试题及答案
- 保险经纪人试题及解析
- 临床医师儿科常见疾病试题及答案
- 采购人政府采购实务培训课件
- 噪声软件使用说明书
- 烟气余热回收技术参数换算公式
- 中医病证诊断疗效
- GB/T 2970-2016厚钢板超声检测方法
- 智能农业实验报告
- GB/T 23445-2009聚合物水泥防水涂料
- 人工神经网络HOPFIELD神经网络
- 中小学生励志主题班会课件《告诉你孩子:几年的放纵-换来的是一生卑微和坎坷》
- 022pet热灌装饮料生产工艺及品质控制
- (完整版)英语高频词汇800词
评论
0/150
提交评论