Python练习之函数和代码复用(一)
单项选择题
1.关于递归函数的描述,以下选项中正确的是 函数名称作为返回值
包含一个循环结构
函数内部包含对本函数的再次调用
函数比较复杂
2.关于递归函数基例的说明,以下选项中错误的是
递归函数的基例不再进行递归
递归函数的基例决定递归的深度
递归函数必须有基例
每个递归函数都只能有一个基例
3.以下选项中,不属于函数的作用的是
降低编程复杂度
增强代码可读性
复用代码
提高代码执行速度
4.假设函数中不包括global保留字,对于改变参数值的方法,以下选项中错误的是
参数的值是否改变与函数中对变量的操作有关,与参数类型无关
参数是列表类型时,改变原参数的值
参数是组合类型(可变对象)时,改变原参数的值
参数是整数类型时,不改变原参数的值
5.在Python中,关于函数的描述,以下选项中正确的是.
一个函数中只允许有一条return语句
Python函数定义中没有对参数指定类型,这说明,参数在函数中可以当作任意类型使用
Python中,def和return是函数必须使用的保留字
函数eval()可以用于数值表达式求值,例如eval("2*3+1")
6.给出如下代码:
def func(a,b): c=a**2+b b=a return c a=10 b=100 c=func(a,b)+a
以下选项中描述错误的是
执行该函数后,变量a的值为10
执行该函数后,变量c的值为200
执行该函数后,变量b的值为100
该函数名称为func
7.在Python中,关于全局变量和局部变量,以下选项中描述不正确的是
全局变量在程序执行的全过程有效
全局变量一般没有缩进
一个程序中的变量包含两类:全局变量和局部变量
全局变量不能和局部变量重名
8.关于面向对象和面向过程编程描述,以下选项中正确的是
所有面向对象编程能实现的功能采用面向过程同样能完成
面向对象编程比面向过程编程更为高级
模块化设计就是面向对象的设计
面向对象和面向过程是编程语言的分类依据
9.以下选项中,对于递归程序的描述错误的是
一定要有基例
执行效率高
书写简单
递归程序都可以有非递归编写方法
10.下面代码的输出结果是
>>>f=lambda x,y:y+x >>>f(10,10)
100
20
10,10
11.关于形参和实参的描述,以下选项中正确的是 程序在调用时,将实参复制给函数的形参
函数定义中参数列表里面的参数是实际参数,简称实参
参数列表中给出要传入函数内部的参数,这类参数称为形式参数,简称形参
程序在调用时,将形参复制给函数的实参
12.关于lambda函数,以下选项中描述错误的是
lambda函数将函数名作为函数结果返回
lambda不是Python的保留字
lambda函数也称为匿名函数
定义了一种特殊的函数
13.以下选项中,对于函数的定义错误的是
def vfunc(a,b):
def vfunc(a,*b):
def vfunc(*a,b):
def vfunc(a,b=2):
14.关于函数的参数,以下选项中描述错误的是
可选参数可以定义在非可选参数的前面
在定义函数时,如果有些参数存在默认值,可以在定义函数时直接为这些参数指定默认值
一个元组可以传递给带有星号的可变参数
在定义函数时,可以设计可变数量参数,通过在参数前增加星号(*)实现
15.关于return语句,以下选项中描述正确的是
return只能返回一个值
函数中最多只有一个return语句
函数可以没有return语句
函数必须有一个return语句
16.关于函数,以下选项中描述错误的是
函数是一段具有特定功能的、可重用的语句组
使用函数的主要目的是降低编程难度和代码重用
Python使用del保留字定义一个函数
函数能完成特定的功能,对函数的使用不需要了解函数内部实现原理,只要了解函数的输入输出方式即可。
17.关于Python的全局变量和局部变量,以下选项中描述错误的是
使用global保留字声明简单数据类型变量后,该变量作为全局变量使用
全局变量指在函数之外定义的变量,一般没有缩进,在程序执行全过程有效
简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放
局部变量指在函数内部使用的变量,当函数退出时,变量依然存在,下次函数调用可以继续使用
18.关于Python的lambda函数,以下选项中描述错误的是
lambda函数将函数名作为函数结果返回
lambda用于定义简单的、能够在一行内表示的函数
可以使用lambda函数定义列表的排序原则
f = lambda x,y:x+y 执行后,f的类型为数字类型
19.下面代码实现的功能描述为
def fact(n): if n==0: return 1 else: return n*fact(n-1) num =eval(input("请输入一个整数:")) print(fact(abs(int(num))))
接受用户输入的整数N,判断N是否是水仙花数
接受用户输入的整数N,判断N是否是完数并输出结论
接受用户输入的整数N,输出N的阶乘值
接受用户输入的整数N,判断N是否是素数并输出结论
20.给出如下代码:
def fact(n): s = 1 for i in range(1,n+1): s *= i return s
以下选项中描述错误的是 fact(n)函数功能为求n的阶乘
s是局部变量
range()函数是Python内置函数
代码中n是可选参数
21.给出如下代码:
ls = ["car","truck"] def funC(a): ls.append(a) return funC("bus") print(ls)
以下选项中描述错误的是
funC(a)中的a为非可选参数
ls.append(a) 代码中的ls是列表类型
执行代码输出结果为['car', 'truck']
ls.append(a) 代码中的ls是全局变量
22.给出如下代码:
ls = ["car","truck"] def funC(a): ls =[] ls.append(a) return funC("bus") print(ls)
以下选项中描述错误的是
执行代码输出结果为['car', 'truck', 'bus']
代码函数定义中,ls.append(a)中的ls是局部变量
ls.append(a) 代码中的ls是列表类型
执行代码输出结果为['car', 'truck']
23.给出如下代码:
import turtle def drawLine(draw): turtle.pendown() if draw else turtle.penup() turtle.fd(50) turtle.right(90)
drawLine(True)
drawLine(True)
drawLine(True)
drawLine(True)
以下选项中描述错误的是
代码drawLine(True)中True替换为0,运行代码结果不变
代码def drawLine(draw)中的draw可取值True或者False
运行代码,在Python Turtle Graphics 中,绘制一个正方形
代码drawLine(True)中True替换为–1,运行代码结果不变
24.给出如下代码:
import turtle def drawLine(draw): turtle.pendown() if draw else turtle.penup() turtle.fd(50) turtle.right(90) drawLine(True) drawLine(0) drawLine(True) drawLine(True) turtle.left(90) drawLine(0) drawLine(True) drawLine(True)
以下选项中描述错误的是:
代码def drawLine(draw)中的draw可取数值0、1、–1等
运行代码,在Python Turtle Graphics 中,绘制一个数码管数字2
代码drawLine(True)中True替换为–1,运行代码结果不变
代码drawLine(True)中True替换为0,运行代码结果不变
25.下面代码的运行结果是
def func(num): num += 1 a =10 func(a) print(a)
11
出错
10
int