资源简介 七、 Python函数与模块程序模块化就是将问题分解为若干个子问题,并用相对独立的程序段针对性地解决各个子问题,提高程序设计的效率。1. 函数的构造及应用(1)函数是组织好的、可重复使用的、用来实现特定功能的代码段,通过函数名来表示和调用。使用函数主要有两个目的:降低编程难度和增加代码复用。(2)Python语言通过保留字def定义函数,语法格式如下:def函数名(参数集合): <函数体> [return函数值](3)函数定义的注意事项①函数代码块以保留字def开头,后接函数标识符名称和圆括号。函数名的命名规则和变量名一样。②参数列表是程序调用该函数时传递给它的值,可以有零个、一个或多个参数,当传递多个参数时,各参数用逗号分隔。③函数体以冒号起始并且缩进,函数体是函数每次被调用时执行的代码,由一行或多行语句组成。④如果函数需要返回值,使用保留字return和返回值列表选择性地返回一个值给调用方,不带return的表达式相当于返回None,函数体结束后会将控制权返回给调用者。⑤定义后的函数不能直接运行,需要经过调用才能运行。调用函数的基本方法如下:函数名(实际参数集合)。⑥每次调用函数可以提供不同的参数作为输入,以实现对不同数据的处理;执行完函数后,可以返回相应的处理结果。2. 函数参数传递(1)定义函数时,圆括号内是使用逗号分隔的形式参数(形参)列表。调用函数时向其传递实际参数(实参)。形参的类型由对应的实参确定,Python解释器会根据实参的值自动推断并动态确定形参的类型。(2)当传递的参数是不可更改对象,如数字和字符串,在函数内部修改形参的值对实参没有影响;当传递的参数是可更改对象,如列表、字典,在函数内部修改形参的值,实参也会发生相应变化。3. 函数参数类型(1)必需参数:又称位置参数,是最常用的参数类型,它要求调用函数时,实参和形参的数量必须一致,顺序也要完全相同。(2)关键字参数:主要指调用函数时的参数传递方式,与函数定义无关。通过关键字参数名传递值,实参顺序可以和形参顺序不一致,避免了用户需要牢记参数位置和顺序的麻烦,使得函数的调用和参数传递更加灵活方便。(3)默认参数:指定义函数时为形参设置默认值,调用函数时,若没有传递实参,则会使用默认参数,当然也可以通过传递实参来替换其默认值。注意:默认参数要放在必需参数后面,否则Python解释器会报错。4. 变量的作用域(1)变量起作用的代码范围称为变量的作用域,不同作用域内同名变量之间互不影响。(2)局部变量和全局变量①局部变量:指在函数内部定义的变量,仅在函数内部有效,当函数退出时局部变量将不再存在。②全局变量:指在函数之外定义的变量,它在程序执行的全过程中均有效。可以在函数内部直接读取全局变量的值,但若要修改该全局变量的值,则需要提前使用保留字global进行声明,否则会被当作局部变量进行处理。5. 模块的导入及应用(1)Python内置对象可以直接使用,而内置模块和第三方模块需要导入后才能使用其中的对象。其中,第三方模块还需要先正确安装才能导入和使用。(2)使用关键字import导入模块或模块中的对象。使用语句“import模块名[as别名]”可以导入指定的模块,并给模块设置一个别名。使用时在对象之前加上模块名(或别名)作为前缀,以“模块名.对象名”的方式访问对象。(3)若只用到模块中的某几个对象,则无须导入整个模块,可以使用“from模块名import对象名[as别名]”语句导入需要使用的对象。使用时可以直接操作导入的对象,不需要使用模块名作为前缀。比如在Python Shell中导入math模块,并调用该模块中的sqrt函数,可采用以下两种方法。方法 示例使用import语句导入模块 >>>import math >>>math.sqrt(9) 3.0使用from-import语句导入模块 >>>from math import sqrt >>>sqrt(9) 3.06. 常用模块及其作用(1)math模块:math模块是Python提供的内置数学类函数库,不支持复数类型。(2)random模块:random模块用来生成随机数,常用函数如下。名称 含义 示例random.random() 随机生成一个[0, 1) 范围内的实数 >>>random.random() 0.8495449896354876random.uniform(a, b) 随机生成一个[a, b]范围内的实数 >>>random.uniform(10, 100) 13.096321648808136random.randint(a, b) 随机生成一个[a, b]范围内的整数 >>>random.randint(8,16) 13random.choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10))表示从0到9的整数中随机挑选一个整数 >>>random.choice(range(10)) 1 >>>random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9]) 8random.sample(seq, k) 从序列中随机挑选k个元素 >>>s=[1, 2, 3, 4, 5, 6, 7, 8, 9] >>>random.sample(s, 3) [9, 8, 3]random.shuffle(seq) 将序列的所有元素随机排序 >>>s=[1, 2, 3, 4, 5, 6, 7, 8, 9] >>>random.shuffle(s) >>>print(s) [3, 4, 7, 5, 9, 2, 1, 6, 8](3)Image模块:可以完成对图像的一些常用操作,比如获取图像尺寸和像素颜色、旋转图像或改变图像格式等。【例1】 有如下Python 程序段:def f(x): return x[::-1]s ="CPU"while len(s) > 0: print(f(s)) s = s[:len(s) - 1]执行该程序段后,输出的结果为( A )A. UPCPCCB. CPUPUUC. UPCD. U【解析】 本题考查自定义函数。由循环和代码s = s[:len(s) - 1]可知,字符串s的长度一直在减少,直到为空,且打印出的字符串是逆序的,A正确。【例2】 有如下Python程序代码:def prt(n): for i in range(n): print( * ,end="") print( )n=int(input("输入打印字符(*)行数:"))for i in range(1,n+1): prt(2*i-1)运行上面的程序,输入整数n的值为3,则输出结果正确的是( D )A. ****************B. **********C.*********D.*********【解析】 函数prt(k)的功能是输出一行,共计k个字符“*”。【例3】 某航空公司对于行李托运费的计费规则如下:10千克内免费,超过10千克的部分按每千克单价为机票价格的1.2%收取托运费。创建一个函数,要求输入机票价格和行李质量,计算需要支付的托运费。请在横线上填入合适的代码:① (w-10) *p*0. 012 ,② cost(price,weight) 。def cost(p, w) : if w<=10: money=0 else: money= ① return moneyprice=int(input(“输入机票价格:”))weight=int(input(“输入行李质量(kg) :”))print(“需要支付托运费:”, ② )【解析】 函数的定义部分:超过10千克的部分开始计算托运费,即(w-10)*p*0. 012。函数的调用即将实参price和weight传入函数中。1. 下列关于函数的定义与编写的说法,错误的是( B )A. 函数是代码复用的一种方式B. 在Python中,使用保留字define定义函数C. 定义函数时,即使函数形参的数量为0,也要保留圆括号D. 函数中可以没有return语句,默认返回一个None对象【解析】 函数是组织好的、可重复使用的、用来实现特定功能的代码段,使用函数的目的之一就是增加代码复用;Python通过保留字def定义函数;无论是定义还是调用函数,不管是否有参数,都需要保留圆括号来表明这是一个函数;如果需要返回值,使用保留字return和返回值列表;若没有return语句,则默认返回一个None对象。2. 有如下Python程序段:def f(a,b)∶ if a>b∶ return a-b return a+bx1=int(input("请输入第一个数"))x2=int(input("请输入第二个数"))print(f(f(x1,x2),f(x2,x1)))当用键盘输入12和13后,程序输出的结果是( C )A. 重复调用出错 B. 50C. 24 D. 2【解析】 本题考查自定义函数和递归算法。将实参12,13分别代入自定义函数f()中,可以得到结果24,C正确。3. 关于Python代码,下列说法中正确的是( D )animals=[ cat , dog , monkey ]print( rose in animals)A. 变量animals的数据类型是字典B. len(animals)的运算结果为2C. animals 的第二个元素是 monkey D. 上述Python代码的输出结果是False【解析】 本题主要考查Python程序的执行。变量animals的数据类型是列表;len(animals)的运算结果为3;animals 的第二个元素是 dog ;上述Python 代码的输出结果是False。4. 某Python程序如下:def f(a, b): result=a*b s=a+b return resulta=int(input(“a=”))b=10s=f(a, b)print(s)程序运行后,输入a的值为5,输出的结果为( D )A. 程序报错 B. sC. 15 D. 50【解析】 输入数据后,将a = 5,b = 10代入定义的函数f中,得到result = 5*10= 50,s = 5+10 = 15,然后函数返回 result的值,所以最后输出s的值,即函数中返回的变量result的值为50。5. 下列程序段的功能是( D )a=int(input("请输入一个正整数"))b=int(input("请输入一个正整数"))while b !=0: r=a % b a=b b=rprint(a)A. 输出a-b的值B. 输出a除以b的余数C. 输出a,b的最小公倍数D. 输出a,b的最大公约数【解析】 本题主要考查Python程序的应用。分析程序,可知该程序实现输出a,b的最大公约数,如代入a=12,b=3可验证结果。6. 有如下Python程序代码:def MMax(a,b): if a>b: return a else: return b下列函数调用的语句中,正确的是( A )A. print(MMax(3,9))B. print(MMax( a ,65))C. k=MMax(31,23,54)D. k=MMax([31,23])【解析】 选项B,在Python中,变量是动态的,因此函数的参数可以接受不同类型的变量。但是,在函数体内部需要对两个变量进行大小比较,而字符串不可以和整型直接进行大小比较,但可以和字符串进行比较。比如这样调用是可以的:print(MMax('a','d')),所以B错误。7. 有如下程序段:d=0i=1while i <=4 : b=int(input("b=")) d=2* d + b i=i + 1print(d)依次输入 1 0 1 1 后,输出的结果是( C )A. 13 B. 1011C. 11 D. 0【解析】 本题主要考查Python程序的执行。分析程序,可知该程序实现将输入的二进制数转换为十进制数,二进制数1011通过“按权展开、逐项相加”的方法转换为十进制数是11。8. 编写程序,实现输入圆的半径r, 计算并输出该圆的面积和周长。实现上述功能的Python程序如下,圆的面积利用自定义函数O(r) 求得,请在横线上填入合适的代码:① math. pi*r**2 ,② O(r) 。import mathdef O(r) : #计算圆的面积 mj= ① return mjr=float(input("请输入半径r:")zc=2*math. pi*r#调用函数s= ② print("圆的周长为:",zc, "面积为:",s)【解析】 题目利用自定义函数O(r) 求得圆的面积,①处圆的面积存储在变量mj中,因此①处代码为math. pi*r**2;②处为调用函数,因此②处代码为O(r)。(共25张PPT)七、 Python函数与模块信息技术 必修1 数据与计算算法的程序实现第三章知识过关程序模块化就是将问题分解为若干个子问题,并用相对独立的程序段针对性地解决各个子问题,提高程序设计的效率。1. 函数的构造及应用(1)函数是组织好的、可重复使用的、用来实现特定功能的代码段,通过函数名来表示和调用。使用函数主要有两个目的:降低编程难度和增加代码复用。(2)Python语言通过保留字def定义函数,语法格式如下:def函数名(参数集合): <函数体> [return函数值](3)函数定义的注意事项①函数代码块以保留字def开头,后接函数标识符名称和圆括号。函数名的命名规则和变量名一样。②参数列表是程序调用该函数时传递给它的值,可以有零个、一个或多个参数,当传递多个参数时,各参数用逗号分隔。③函数体以冒号起始并且缩进,函数体是函数每次被调用时执行的代码,由一行或多行语句组成。④如果函数需要返回值,使用保留字return和返回值列表选择性地返回一个值给调用方,不带return的表达式相当于返回None, 函数体结束后会将控制权返回给调用者。⑤定义后的函数不能直接运行,需要经过调用才能运行。调用函数的基本方法如下:函数名(实际参数集合)。⑥每次调用函数可以提供不同的参数作为输入,以实现对不同数据的处理;执行完函数后,可以返回相应的处理结果。2. 函数参数传递(1)定义函数时,圆括号内是使用逗号分隔的形式参数(形参)列表。调用函数时向其传递实际参数(实参)。形参的类型由对应的实参确定,Python解释器会根据实参的值自动推断并动态确定形参的类型。(2)当传递的参数是不可更改对象,如数字和字符串,在函数内部修改形参的值对实参没有影响;当传递的参数是可更改对象,如列表、字典,在函数内部修改形参的值,实参也会发生相应变化。3. 函数参数类型(1)必需参数:又称位置参数,是最常用的参数类型,它要求调用函数时,实参和形参的数量必须一致,顺序也要完全相同。(2)关键字参数:主要指调用函数时的参数传递方式,与函数定义无关。通过关键字参数名传递值,实参顺序可以和形参顺序不一致,避免了用户需要牢记参数位置和顺序的麻烦,使得函数的调用和参数传递更加灵活方便。(3)默认参数:指定义函数时为形参设置默认值,调用函数时,若没有传递实参,则会使用默认参数,当然也可以通过传递实参来替换其默认值。注意:默认参数要放在必需参数后面,否则Python解释器会报错。4. 变量的作用域(1)变量起作用的代码范围称为变量的作用域,不同作用域内同名变量之间互不影响。(2)局部变量和全局变量①局部变量:指在函数内部定义的变量,仅在函数内部有效,当函数退出时局部变量将不再存在。②全局变量:指在函数之外定义的变量,它在程序执行的全过程中均有效。可以在函数内部直接读取全局变量的值,但若要修改该全局变量的值,则需要提前使用保留字global进行声明,否则会被当作局部变量进行处理。5. 模块的导入及应用(1)Python内置对象可以直接使用,而内置模块和第三方模块需要导入后才能使用其中的对象。其中,第三方模块还需要先正确安装才能导入和使用。(2)使用关键字import导入模块或模块中的对象。使用语句“import模块名[as别名]”可以导入指定的模块,并给模块设置一个别名。使用时在对象之前加上模块名(或别名)作为前缀,以“模块名.对象名”的方式访问对象。(3)若只用到模块中的某几个对象,则无须导入整个模块,可以使用“from模块名import对象名[as别名]”语句导入需要使用的对象。使用时可以直接操作导入的对象,不需要使用模块名作为前缀。比如在Python Shell中导入math模块,并调用该模块中的sqrt函数,可采用以下两种方法。方法 示例使用import语句导入模块 >>>import math>>>math.sqrt(9)3.0使用from-import语句导入模块 >>>from math import sqrt>>>sqrt(9)3.06. 常用模块及其作用(1)math模块:math模块是Python提供的内置数学类函数库,不支持复数类型。(2)random模块:random模块用来生成随机数,常用函数如下。名称 含义 示例random.random() 随机生成一个[0, 1) 范围内的实数 >>>random.random()0.8495449896354876random.uniform(a, b) 随机生成一个[a, b]范围内的实数 >>>random.uniform(10, 100)13.096321648808136random.randint(a, b) 随机生成一个[a, b]范围内的整数 >>>random.randint(8,16)13名称 含义 示例random.choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10))表示从0到9的整数中随机挑选一个整数 >>>random.choice(range(10))1>>>random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9])8random.sample(seq, k) 从序列中随机挑选k个元素 >>>s=[1, 2, 3, 4, 5, 6, 7, 8, 9]>>>random.sample(s, 3)[9, 8, 3]random.shuffle(seq) 将序列的所有元素随机排序 >>>s=[1, 2, 3, 4, 5, 6, 7, 8, 9]>>>random.shuffle(s)>>>print(s)[3, 4, 7, 5, 9, 2, 1, 6, 8](3)Image模块:可以完成对图像的一些常用操作,比如获取图像尺寸和像素颜色、旋转图像或改变图像格式等。典例精选【例1】 有如下Python 程序段:def f(x): return x[::-1]s ="CPU"while len(s) > 0: print(f(s)) s = s[:len(s) - 1]执行该程序段后,输出的结果为( )A. UPCPCCB. CPUPUUAC. UPCD. U【解析】 本题考查自定义函数。由循环和代码s = s[:len(s) - 1]可知,字符串s的长度一直在减少,直到为空,且打印出的字符串是逆序的,A正确。【例2】 有如下Python程序代码:def prt(n): for i in range(n): print( * ,end="") print( )n=int(input("输入打印字符(*)行数:"))for i in range(1,n+1): prt(2*i-1)运行上面的程序,输入整数n的值为3,则输出结果正确的是( )A. **************** B. **********C.*********D.*********D【解析】 函数prt(k)的功能是输出一行,共计k个字符“*”。【例3】 某航空公司对于行李托运费的计费规则如下:10千克内免费,超过10千克的部分按每千克单价为机票价格的1.2%收取托运费。创建一个函数,要求输入机票价格和行李质量,计算需要支付的托运费。请在横线上填入合适的代码:①__________________,②___________________。 def cost(p, w) : if w<=10: money=0 else: money= ① return moneyprice=int(input(“输入机票价格:”))weight=int(input(“输入行李质量(kg) :”))print(“需要支付托运费:”, ② ) (w-10) *p*0. 012cost(price,weight)【解析】 函数的定义部分:超过10千克的部分开始计算托运费,即(w-10)*p*0. 012。函数的调用即将实参price和weight传入函数中。自我检测1. 下列关于函数的定义与编写的说法,错.误.的是( )A. 函数是代码复用的一种方式B. 在Python中,使用保留字define定义函数C. 定义函数时,即使函数形参的数量为0,也要保留圆括号D. 函数中可以没有return语句,默认返回一个None对象【解析】 函数是组织好的、可重复使用的、用来实现特定功能的代码段,使用函数的目的之一就是增加代码复用;Python通过保留字def定义函数;无论是定义还是调用函数,不管是否有参数,都需要保留圆括号来表明这是一个函数;如果需要返回值,使用保留字return和返回值列表;若没有return语句,则默认返回一个None对象。B2. 有如下Python程序段:def f(a,b)∶ if a>b∶ return a-b return a+bx1=int(input("请输入第一个数"))x2=int(input("请输入第二个数"))print(f(f(x1,x2),f(x2,x1)))当用键盘输入12和13后,程序输出的结果是( )A. 重复调用出错 B. 50C. 24 D. 2【解析】 本题考查自定义函数和递归算法。将实参12,13分别代入自定义函数f()中,可以得到结果24,C正确。C3. 关于Python代码,下列说法中正确的是( )animals=[ cat , dog , monkey ]print( rose in animals)A. 变量animals的数据类型是字典 B. len(animals)的运算结果为2C. animals 的第二个元素是 monkey D. 上述Python代码的输出结果是False【解析】 本题主要考查Python程序的执行。变量animals的数据类型是列表;len(animals)的运算结果为3;animals 的第二个元素是 dog ;上述Python 代码的输出结果是False。D4. 某Python程序如下:def f(a, b): result=a*b s=a+b return resulta=int(input(“a=”))b=10s=f(a, b)print(s)程序运行后,输入a的值为5,输出的结果为( )A. 程序报错 B. sC. 15 D. 50【解析】 输入数据后,将a = 5,b = 10代入定义的函数f中,得到result = 5*10 = 50,s =5+10 = 15,然后函数返回 result的值,所以最后输出s的值,即函数中返回的变量result的值为50。D5. 下列程序段的功能是( )a=int(input("请输入一个正整数"))b=int(input("请输入一个正整数"))while b !=0: r=a % b a=b b=rprint(a)A. 输出a-b的值 B. 输出a除以b的余数C. 输出a,b的最小公倍数 D. 输出a,b的最大公约数【解析】 本题主要考查Python程序的应用。分析程序,可知该程序实现输出a,b的最大公约数,如代入a=12,b=3可验证结果。D6. 有如下Python程序代码:def MMax(a,b): if a>b: return a else: return b下列函数调用的语句中,正确的是( )A. print(MMax(3,9)) B. print(MMax( a ,65))C. k=MMax(31,23,54) D. k=MMax([31,23])【解析】 选项B,在Python中,变量是动态的,因此函数的参数可以接受不同类型的变量。但是,在函数体内部需要对两个变量进行大小比较,而字符串不可以和整型直接进行大小比较,但可以和字符串进行比较。比如这样调用是可以的:print(MMax('a','d')),所以B错误。A7. 有如下程序段:d=0i=1while i <=4 : b=int(input("b=")) d=2* d + b i=i + 1print(d)依次输入 1 0 1 1 后,输出的结果是( )A. 13 B. 1011C. 11 D. 0【解析】 本题主要考查Python程序的执行。分析程序,可知该程序实现将输入的二进制数转换为十进制数,二进制数1011通过“按权展开、逐项相加”的方法转换为十进制数是11。C8. 编写程序,实现输入圆的半径r, 计算并输出该圆的面积和周长。实现上述功能的Python程序如下,圆的面积利用自定义函数O(r) 求得,请在横线上填入合适的代码:①_______________,②__________。 import mathdef O(r) : #计算圆的面积 mj= ① return mjr=float(input("请输入半径r:")zc=2*math. pi*r#调用函数s= ② print("圆的周长为:",zc, "面积为:",s)【解析】 题目利用自定义函数O(r) 求得圆的面积,①处圆的面积存储在变量mj中,因此①处代码为math. pi*r**2;②处为调用函数,因此②处代码为O(r)。math. pi*r**2O(r) 展开更多...... 收起↑ 资源列表 七、 Python函数与模块.docx 七、 Python函数与模块.pptx