Python程序设计第五章测验总结

第五章 函数与应用

5.1 函数与问题分而治之

1.下面说法错误的是_____

A.函数能提高应用的模块性,和代码的重复利用率

B.python的函数可以分为内置函数和用户自定义函数

C.不带返回值的return,相当于返回None

D.每个return语句只能返回一个值

解:D

return可以以元组的形式返回多个值

2.函数没有参数时,定义函数和调用函数都不用可以省略函数名后的括号。

解:正确

3.一个函数中可以有多个return语句,但是每次调用函数只会执行其中一个return。

解:正确

4.定义函数时,带有默认值的参数必须出现在参数列表的最右端,任何一个带有默认值的参数右边不允许出现没有默认值的参数

解:正确

5.在调用函数时,可以通过关键参数的形式进行传值,从而避免必须记住函数形参顺序的麻烦

解:正确

6.调用函数时传递的实参个数必须与函数形参个数相等才行

解:错误

7.在函数中yield语句的作用和return完全一样

解:错误

8.在Python中定义函数时不需要声明函数参数的类型

解:正确

9.在python的函数中不可再定义新的函数

解:错误

10.定义函数时的参数叫形式参数,调用函数时的参数叫__参数

解:实际

11.函数代码块以 __关键词开头,后接函数标识符名称和圆括号()。

解:def

12.以下python程序的输出是多少?

def max(a,b):   
	if a>b:    
    	return a  
    else:    
    	return b 
print(max(3,6))

解:6

5.2 基于函数验证哥德巴赫猜想

1.如下程序的运行结果是___

def exchange(num1,num2):   
	num1,num2=num2,num1 
num1=5 
num2=7 
exchange(num1,num2) 
print(num1,num2)

A.5 7

B.7 5

C.5 5

D.7 7

解:A

不可变数据类型的值,传入的是复制的值。

2.如下程序的运行结果是___

def exchange(lst):   
	lst[0]=100 
lst=[1,2,3] 
exchange(lst) 
print(lst)

A.[1,2,3]

B.[100,2,3]

C.[1,1,1]

D.[100,100,100]

解:B

可变数据类型的值,传入的是地址的复制值,所以会更改对应的值。

3.如下程序的运行结果是___

def exchange(lst):   
	lst=[4,2,3] 
lst=[1,2,3] 
exchange(lst) 
print(lst)

A.[4,2,3]

B.[1,1,1]

C.[1,2,3]

D.[4,4,4]

解:C

因为只是将复制地址的指向更改,所以原列表不变。

4.如下代码被执行,运行结果是____

print(get_max(3,5)) 
def get_max(num1,num2):   
	return num1 if num1>num2 else num2

A.3

B.5

C.8

D.语法错

解:D

解释型语言,必须在使用函数前提前定义。

5.Python不仅允许函数嵌套调用,还允许函数嵌套定义。

解:正确

高阶函数的用法

6.在调用函数时,必须牢记函数形参顺序才能正确传值

解:错误

可以使用关键词的方式来进行传参。

7.在Python中定义函数时不需要声明函数的返回值类型

解:正确

8.在函数中没有任何办法可以通过形参来影响实参的值

解:错误

对于可变数据类型,可以通过形参来影响实参的值。

9.在定义函数时,某个参数名字前面带有一个*符号表示可变长度参数,可以接收任意多个普通实参并存放于一个元组之中

解:正确

10.在定义函数时,某个参数名字前面带有两个*符号表示可变长度参数,可以接收任意多个关键参数并将其存放于一个字典之中

解:正确

11.python函数的参数传递是可变类型(如fun(a)),如果在函数内部修改a的值,修改后fun外部的a不会受到影响

解:错误

12.以下python程序的输出是多少

def change(list):   
	list.append([0,0])   
	return 
mylist = [1,2,3] 
change(mylist) 
print(mylist)

解:[1,2,3,[0,0]] 或[1, 2, 3, [0, 0]]

5.3 多种方法实现十进制转二进制

1.在函数内没有办法定义全局变量

解:错误

2.在函数内部直接修改形参的值并不影响外部实参的值

解:错误

可变数据类型

3.如果在函数中有语句return 3,那么该函数一定会返回整数3

解:错误

不执行这条语句就不会返回3.

4.调用带有默认值参数的函数时,不能为默认值参数传递任何值,必须使用函数定义时设置的默认值

解:错误

可以使用其他值来替换默认值。

5.在同一个作用域内,局部变量会隐藏同名的全局变量

解:正确

6.python函数的必需参数须以正确的顺序传入函数,调用时的数量必须和声明一样

解:正确

7.python使用关键字参数允许函数调用时参数的顺序和声明不一样

解:正确

8.如下函数中需要使用一个全局变量num,请在下划线处补充必要的语句

def fun():  
	__________  
	num= numk + 1

解:global num

9.如下程序的输出结果是___

def myfun(x,y=200,z=100):   
	print(x,y,z) 
myfun(50,100)

解:50 100 100

10.如下程序的输出结果是__

def myvar1(*t):   
	print(t) 
myvar1(1,2,3)

解:(1,2,3) 或(1, 2, 3)

11.如下程序的输出结果是____

fun=lambda x,y:x+y 
print(fun(5,10))

解:15

12.如下程序的输出结果是___

def fun():   
	return lambda x,y:x*x+y*y 
fx=fun() 
print(fx(3,4))

解:25

5.4 多种方法求圆周率

1.关于python的__name__,下面描述错误的是

A.**__name__**是一个变量

B.当前模块被另外模块调用时,当前模块中的____name____的值是’main

C.____name____可用于区分当前模块是被调用还是主动执行

D.____name____的类型属于字符串

解:B

2.关于函数的说法正确的是__

A.在面对复杂的问题时,函数的数量应该要少,函数内的代码要多

B.python函数的形式参数名称和实际参数名称必须一样

C.python函数的返回值不仅可以是变量、常量,甚至可以是函数

D.python函数的最后一个语句必须使用return

解:C

3.如下函数的返回值是___

def test():   
	temp=[1,2,3,4,5,6,7,8,9,10]   
	return [x for x in temp if x%3==2]

A.[2, 5, 8]

B.[1, 3, 6]

C.[3, 6, 9]

D.[1, 4, 7]

解:A

列表推导式

4.如下函数的返回值是__

def test():   
	l1=[1,2,3]   
	l2=[4,5,6]   
	return list(zip(l1,l2))

A.[(1, 1), (2, 2), (3, 3)]

B.[(4, 4), (5, 5), (6, 6)]

C.[(4, 1), (5, 2), (6, 3)]

D.[(1, 4), (2, 5), (3, 6)]

解:D

5.在函数内部没有任何方法可以影响实参的值

解:错误

6.函数中的return 语句一定能够得到执行

解:错误

7.不同作用域中的同名变量之间互相不影响,也就是说,在不同的作用域内可以定义同名的变量

解:正确

8.函数内部定义的局部变量当函数调用结束后被自动删除

解:正确

9.python函数没有办法处理比当初声明时更多的参数

解:错误

10.如下代码使用了math模块中的sqrt,为了使得该代码正确,需要使用import,请给出和本次调用相适配的import的完整指令____

print(sqrt(3.5))

解:from math import sqrt 或from math import *

注意:因为在使用sqrt函数式并没有指定math包,说明导入了这个函数,需要使用from-import的形式。

11.已知 g = lambda x, y=3, z=5: x+y+z,那么表达式g(2)的值为__

解:10

12.以下python程序的输出结果是多少?

def printinfo(arg1, *others):   
	print(others) 
printinfo(1,2,3)

解:(2,3) 或(2, 3)

一个 * 以元组的形式接受变长参数。

5.5 base64编码

1.函数中必须包含return 语句

解:错误

2.函数可以没有任何参数

解:正确

3.一个函数如果带有默认值参数,那么必须所有参数都设置默认值

解:错误

4.在Python函数体内部可以调用它本身

解:正确

5.在Python函数中,一条return语句可以返回多个值

解:正确

6.Base64是一种用32个字符来表示任意二进制数据的方法

解:错误

7.如下语句的输出结果是 _____

print(5<<1)

解:10

左移1位,原数字变为原来的2倍。

8.如下代码的输出结果是_____

def number1Bit(x):   
	count = 0   
	while x:    
    	count = count + 1    
        x = x & (x-1)  
    return count 
print(number1Bit(17))

解:2

9.如下代码的输出结果是__

a,b=5,3 
a ^= b 
b ^= a 
a ^= b 
print(a,b)

解:3 5

10.12 & 8的结果是_______

解:8

11.12 | 8的结果是_______

解:12

12.以下python程序的输出结果的类型是什么?

def printinfo(arg1, **others):   
	print(others) 
printinfo(1,p=2,q=3)

解:字典

两个 * 接受的变长参数会以字典的方式存储

5.6 递归思想和递归函数

1.下列那个Python内置函数可以返回列表、元组、字典、集合、字符串以及range对象中元素个数

A.len()

B.max()

C.min()

D.sum()

解:A

2.下列那个Python内置函数用来返回序列中的最大元素?

A.len()

B.max()

C.min()

D.sum()

解:B

3.下列那个Python内置函数用来返回序列中的最小元素?

A.len()

B.max()

C.min()

D.sum()

解:C

4.下列哪个Python内置函数用来返回数值型序列中所有元素之和?

A.len()

B.max()

C.min()

D.sum()

解:D

5.如果递归函数没有递归结束的语句,将会导致无穷递归,从而执行时出现“死循环”

解:正确

6.如下程序的运行结果是___

def fact(num):   
	ret=0;   
	if(num<=1):   
    	ret=1; 
    else:    
    	ret=num*fact(num-1)  
        print(num,end=' ')  
    return ret 
print(fact(3))

解:2 3 6

7.如下程序的运行结果是__

def fact(num):   
	ret=0;  
    if(num<=1):   
    	ret=1; 
    else:   
    	print(num,end=' ')   
        ret=num*fact(num-1)  
    return ret 
print(fact(3))

解:3 2 6

8.如下程序的运行结果是____

def func(str1):  
	if len(str1)==1 or len(str1)==0:   
    	return str1   
    else:    
    	return str1[-1]+func(str1[:-1]) 
print(func("hello"))

解:olleh

9.如下程序的运行结果是__

def func(str1):   
	if str1=="":   
    	return str1   
    else:    
    	return func(str1[1:])+str1[0] 
print(func("hello"))

解:olleh

10.已知列表x = [1.0, 2.0, 3.0],那么表达式sum(x)/len(x)的值为__

解:2.0

注意,浮点数进行除法得到的是浮点数

11.以下python程序的输出结果是多少?

sum = lambda arg1,arg2: arg1+arg2
print(sum(1,2))

解:3

12.以下python程序的输出结果是多少?

list = [1,2,3,4] 
ITER = iter(list)
print(next(ITER))

解:1

13.以下python程序的输出结果是多少?

class numbers:  
	def __iter__(self):   
    	self.a = 0    
        return self   
    def __next__(self):  
    	x = self.a     
    	self.a += 5    
        return x 
N = numbers() 
iter = iter(N) 
num1 = next(iter) 
num2 = next(iter) 
print(num2)

解:5

num1=0,num2=5

5.7 车队的公共钥匙盒

1.如下程序的运行结果是_

def lengthOfLastWord(sstr):     
	for word in sstr.split()[::-1]:      
    	return len(word)     
    return 0 
print(lengthOfLastWord("i like python"))

A.0

B.1

C.4

D.6

解:D

2.如下程序的运行结果是_____

def sortArrayByParity( lst): 
	lst.sort(key=lambda t: t%2)  
    return lst  
lst=[3,1,2,4] 
sortArrayByParity(lst) print(lst)

A.[2, 4, 3, 1]

B.[1, 2, 3, 4]

C.[4, 3, 2, 1]

D.[3, 1, 2, 4]

解:A

3.如下代码的运行结果是___

def transpose(lst): 
	test = [[0 for i in range(len(lst))] for j in range(len(lst[0]))]   
	for i in range(len(lst)):  
    	for j in range(len(lst[i])): 
        	test[j][i]=lst[i][j] 
    return test
print(transpose([[1,2,3],[4,5,6]]))

A.[[1, 2, 3], [4, 5, 6]]

B.[[1, 4], [2, 5], [3, 6]]

C.[[1, 2], [3, 4], [5, 6]]

D.[[4, 5, 6], [1, 2, 3]]

解:B

这个代码执行的是矩阵的转置操作

4.如下程序的运行结果是____

def statistics(str1): 
	num = 0
    isah = 0 
    kong = 0  
    other = 0   
    for i in str1 :   
    	if i.isdigit():     
        	num +=1   
        elif i.isalpha():    
        	isah +=1     
        elif i.isspace():   
        	kong +=1    
        else:     
        	other +=1
    return num,isah,kong,other 
print(statistics(' das1 32 a2da'))

解:(4, 6, 3, 0) 或(4,6,3,0)

isalpha() 方法检测字符串是否只由字母组成。

注意,多个返回值是以元组的形式返回的。

5.如下程序的运行结果是___

def convert( num): 
	flag=0   
	if num==0:  
    	return "0"  
    if num<0:    
    	num=num*(-1)    
        flag=1  
    str1=""  
    while num:   
    	str1= str(num % 7) + str1   
        num=num//7  
    if flag==0:  
    	return str1  
    else:   
    	return "-" + str1 
print(convert(-17))

解:-23

6.已知x = {1:2, 2:3, 3:4},那么表达式sum(x)的值为__

解:6

7.已知x = {1:2, 2:3, 3:4}, 那么表达式sum(x.values())的值为__

解:9

8.已知字典x = {i: str(i+3) for i in range(3)},那么表达式sum(x)的值为__

解:3

9.已知字典x = {i: str(i+3) for i in range(3)},那么表达式sum(item[0] for item in x.items())的值为__

解:3

10.如果函数中return语句不带任何返回值,那么该函数返回值为__

解:None

11.以下python程序的输出结果是多少?

def returnSum(Dict):  
	sum = 0   
	for i in Dict:    
    	sum = sum + Dict[i]   
    return sum 
dict = {'a': 1, 'b': 2, 'c': 3} 
print(returnSum(dict))

解:6

12.以下python程序的输出结果是多少?

x = {'a':1, 'b':2} 
y = {'b': 3, 'c': 4} 
from collections import Counter 
X, Y = Counter(x), Counter(y) 
z = dict(X+Y) 
print(z)

解:{‘a’: 1, ‘b’: 5, ‘c’: 4} 或{‘a’:1, ‘b’:5, ‘c’:4} 或{‘a’ : 1, ‘b’: 5, ‘c’ : 4} 或{”a“: 1, “b”: 5, “c”: 4} 或{”a“:1, “b”:5, “c”:4}

从 mapping 中实例化 Counter 对象,mapping 类型的数据就是元素为(x, y)的列表,字典也属于 mapping 类型的数据。

虽然传入的 mapping 类型的数据是一样的,但是由于字典中的键是唯一的,因此如果字典中的键重复会保留最后一个

你可能感兴趣的:(Python,python,pycharm)