内容正文:
专题十二 函数
一、单项选择题
1.下列说法错误的是( )
A.递归函数必须有基例
B.递归函数的基例不再进行递归
C.每个递归函数都只能有一个基例
D.递归函数的基例决定递归的深度
【答案】C
【解析】递归函数至少有一个基例
2.假设函数中不包括 global关键字,对于改变参数值的方法,下列叙述正确的是( )
A.参数是列表类型时,改变原参数的值
B.参数是元组时,改变原参数的值
C.参数的值是否改变与函数中对变量的操作有关,与参数类型无关
D.参数是整数类型时,不改变原参数的值
【答案】A
【解析】参数是可变数据类型的时候,会改变原参数的值
3.下列选项中,对于函数的定义错误的是( )
A. def func(a, * b):
B. def func(a,b):
C. def func( * a,b):
D. def func(a,b=2):
【答案】C
【解析】不定长参数必须放在位置参数的右端
4.在定义标准自定义函数时,下列( )可以缺省。
A.函数名
B.形参
C. def
D.( )
【答案】B
【解析】自定义函数时,参数和返回值可以缺省
5.在标准自定义函数中,按照执行顺序首先执行( )
A.实参传递给形参
B.形参进行相关运算
C.将返回值返回到调用处
D.使用返回结果再进行相关运算
【答案】A
【解析】调用函数时,首先把实参传递给形参。再执行函数体内的程序,再将运算的结果返回
6.在标准自定义函数中,形参前有一个“*”,表示将接收的值存放到一个( )中。
A.字符串
B.字典
C.元组
D.列表
【答案】C
【解析】形参前面加*表示元组不定长参数,在参数前面加**表示字典不定长参数
7. 在定义匿名函数时,下列( )不可以缺省。
A. lambda
B.函数名
C. return
D.( )
【答案】A
【解析】定义匿名函数,关键字lambda不能缺省
8.下列选项中,引用不正确的是( )。
A.import random
B. form random import *
C.import random as rd
D. from random import random
【答案】D
【解析】from 模块名 import 函数名,因此D选项错误
9. 在调用函数时,传递的参数必须与函数定义的参数一一对应,以上描述的是( )
A.位置参数
B. 默认参数
C.关键字参数
D.可变参数
【答案】A
【解析】传递的参数必须与函数定义的参数一一对应是位置参数的要求
10. 在调用时,采用“参数名=值”的方式,可以无须考虑函数定义中参数的位置顺序,以上描述的是( )
A.不可变参数
B. 默认参数
C.关键字参数
D.可变参数
【答案】C
【解析】关键字参数无须考虑函数定义中参数的位置顺序
二、填空题
1. 定义函数时,使用关键字______。
【答案】def
【解析】def 来定义函数
2. 如果函数没有返回值,那么该函数的返回值为____。
【答案】None
【解析】函数没有返回值,则默认返回None
3. 自定义函数时哪些是可以缺省的________________。
【答案】函数参数、函数返回值
【解析】函数参数、函数返回值可以缺省
4. 函数调用时,若是位置参数则实参和形参的个数必须____。
【答案】一一对应
【解析】位置参数的要求是实参与形参的个数必须一一对应
5. 已知函数定义 def fun(*p): return sum(p), 则表达式 fun(1,2,3)的值为____。
【答案】6
【解析】将传入的1,2,3封装成元组,sum((1,2,3))得到的累加和为6
6. 在定义函数时,参数名前加“*”表示该参数为____。
【答案】不定长参数(元组不定长参数)
【解析】参数名前加*或**表示不定长参数
7.下面代码的运行结果是_________。
lst1=[3,4,5]
lst2=[6,7,8,9]
print(list(zip(lst1,lst2)))
【答案】[(3, 6), (4, 7), (5, 8)]
【解析】zip( )函数将lst1和lst2的元素一一对应,以lst1为主。
8.使用关键字_____来定义匿名函数。
【答案】lambda
【解析】使用lambda来定义匿名函数
9. 在函数内部,可以通过关键字____来定义全局变量。
【答案】global
【解析】使用global定义全局变量
10.下面代码的运行结果为____。
lst=[1,2,3,4,5]
nlst=list(map(str,lst))
print(''.join(nlst))
【答案】12345
【解析】map()函数指定str()函数依次处理每个元素,最后再使用join()函数拼接
三、程序设计题
1. 编写程序,实现将列表lst=[23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]中的素数去除,并输出去除素数后列表lst的元素个数。(判断素数的部分使用函数)
【答案】
def su(n):
if n>=2:
flag=True
for i in range(2,n):
if n%i==0:
flag=False
break
return flag
else:
return False
lst=[23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]
nlst=[]
for i in lst:
if su(i):
nlst.append(i)
for i in nlst:
lst.remove(i)
print(len(lst))
【解析】先定义一个判断素数的函数,找出lst里面的素数可以存放于另外一个列表。再遍历装着素数的列表从lst里面删除
2.猴子吃桃问题:猴子第一天摘了若干个桃子,当即吃了一半又多吃一个。第二天吃了一半又多吃一个,依次类推。到了第十天桃子只剩1个,问第一天摘了多少桃子?
【答案】
def tao(n):
if n==10:
return 1
else:
return 2*tao(n+1)+2
print("第一天摘的桃子:",tao(1))
【解析】问题的突破口是第十天的桃子只剩1个,那么第九天的桃子是2*1+2=4个,也就是第n天的桃子数为2*tao(n+1)+2l得来的
3.键盘输入两个正整数a,b。使用辗转相除法求两个数的最大公约数和最小公倍数
【答案】
def gygb(a,b):
if a<b:
a,b=b,a
m=a*b
while a%b!=0:
a,b=b,a%b
return b,m//b
x,y=eval(input("请输入两个正整数:"))
print("最大公约数:",gygb(x,y)[0])
print("最小公倍数:",gygb(x,y)[1])
【解析】辗转相除法是一位数学家提出的,可以尝试着记住这个代码
学科网(北京)股份有限公司
$$
专题十二 函数
一、单项选择题
1.下列说法错误的是( )
A.递归函数必须有基例
B.递归函数的基例不再进行递归
C.每个递归函数都只能有一个基例
D.递归函数的基例决定递归的深度
2.假设函数中不包括 global关键字,对于改变参数值的方法,下列叙述正确的是( )
A.参数是列表类型时,改变原参数的值
B.参数是元组时,改变原参数的值
C.参数的值是否改变与函数中对变量的操作有关,与参数类型无关
D.参数是整数类型时,不改变原参数的值
3.下列选项中,对于函数的定义错误的是( )
A. def func(a, * b):
B. def func(a,b):
C. def func( * a,b):
D. def func(a,b=2):
4.在定义标准自定义函数时,下列( )可以缺省。
A.函数名
B.形参
C. def
D.( )
5.在标准自定义函数中,按照执行顺序首先执行( )
A.实参传递给形参
B.形参进行相关运算
C.将返回值返回到调用处
D.使用返回结果再进行相关运算
6.在标准自定义函数中,形参前有一个“*”,表示将接收的值存放到一个( )中。
A.字符串
B.字典
C.元组
D.列表
7. 在定义匿名函数时,下列( )不可以缺省。
A. lambda
B.函数名
C. return
D.( )
8.下列选项中,引用不正确的是( )。
A.import random
B. form random import *
C.import random as rd
D. from random import random
9. 在调用函数时,传递的参数必须与函数定义的参数一一对应,以上描述的是( )
A.位置参数
B. 默认参数
C.关键字参数
D.可变参数
10. 在调用时,采用“参数名=值”的方式,可以无须考虑函数定义中参数的位置顺序,以上描述的是( )
A.不可变参数
B. 默认参数
C.关键字参数
D.可变参数
二、填空题
1. 定义函数时,使用关键字______。
2. 如果函数没有返回值,那么该函数的返回值为____。
3. 自定义函数时哪些是可以缺省的________________。
4. 函数调用时,若是位置参数则实参和形参的个数必须____。
5. 已知函数定义 def fun(*p): return sum(p), 则表达式 fun(1,2,3)的值为____。
6. 在定义函数时,参数名前加“*”表示该参数为____。
7.下面代码的运行结果是_________。
lst1=[3,4,5]
lst2=[6,7,8,9]
print(list(zip(lst1,lst2)))
8.使用关键字_____来定义匿名函数。
9. 在函数内部,可以通过关键字____来定义全局变量。
10.下面代码的运行结果为____。
lst=[1,2,3,4,5]
nlst=list(map(str,lst))
print(''.join(nlst))
三、程序设计题
1. 编写程序,实现将列表lst=[23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]中的素数去除,并输出去除素数后列表lst的元素个数。(判断素数的部分使用函数)
2.猴子吃桃问题:猴子第一天摘了若干个桃子,当即吃了一半又多吃一个。第二天吃了一半又多吃一个,依次类推。到了第十天桃子只剩1个,问第一天摘了多少桃子?
3.键盘输入两个正整数a,b。使用辗转相除法求两个数的最大公约数和最小公倍数
学科网(北京)股份有限公司
$$