牛客网专项练习30天Pytnon篇第24天

1.以下程序输出为:(A) 

def test(a,b,*args):
	print(a)
	print(b)
	print(args)
	
test(11,22,33,44,55,66,77,88,99)

A.11 22 (33, 44, 55, 66, 77, 88, 99)

B.编译错误

C.运行错误

D.11 22 (11,22,33, 44, 55, 66, 77, 88, 99)

解析:

       def test(a,b,*args),a,b位置参数;*args为不定长位置参数,传入的参数被放入一个元祖里。所以,a,b分别被赋值11、22,而其他的数被存到一个元组里。


2.有如下函数定义,执行结果正确的是:(A)

def dec(f):
	n=3
	def wrapper(*args,**kw):
		return f(*args,**kw)*n
	return wrapper

@dec
def foo(n):
	return n * 2

A.foo(2) == 12 

B.foo(3) == 12 

C.foo(2) == 6 

D.foo(3) == 6

解析:

       调用函数foo(2)执行的过程:2*2*3=12;调用foo(2),执行wrapper(),wrapper()函数调用foo()函数,foo函数的返回值是2*2=4,回到wrapper函数4*3=12,返回值为12;把wrapper函数里面return f(*args,**kw) * n ,拆为两步走(先res=f(*args,**kw) * n 再return res)。


3.执行下列程序,输出结果为:(C

def fun(a,*,b):
    print(b)
fun(1,2,3,4)

A.[2,3,4] 

B.[3,4] 

C.报错 

D.4

解析:

       当函数的的形参单独为*时,它并不属于未匹配的位置参数,而是表示后面的参数必须使用关键字参数进行匹配,所以这里会抛出异常。参数的顺序应该是(位置参数,默认参数,位置不定长参数,关键字不定长参数);如果你希望强迫调用者使用某些参数,且必须以关键字参数的形式传参,那么你只需要在所需位置的前一个位置放置一个*。 def f1(a, *, b, c): return a + b + c 对于上面这个函数而言,调用时参数a可以任意值, 但b,c参数一定要以关键字参数的形式传参,如fun(1, b=4, c=5),否则将会报错。


4.下面这段程序的功能是什么:( A )

def f(a, b):
    if b == 0:
        return a
    else:
        return f(b, a%b) 
a,b = map(int,input("Enter two natural numbers:" ).split())
print(f(a, b))

A.求ab最大公约数 

B.求ab最小公倍数 

C.求a%b 

D.求a/b

解析:    

       a%b是求余数 碾转相除法,又称欧几里得函数,以除数和余数反复做除法运算,当余数为0时,取当前算式除数为最大公约数。假设a = 27, b = 18 即 f(a, b)=f(27, 18); if不成立,进else; f(b, a%b)=f(18, 27%18)即f(18, 9); 没有达到退出的条件,再调f(18, 9); f(b, a%b) = f(9, 18%9)即f(9, 0); b=0,if成立,输出a=9 即只有在a%b=0的时候,条件才成立,输出a。


5.python变量的查找顺序为:(A

A.局部作用域>外部嵌套作用域>全局作用域>内置模块作用域

B.外部嵌套作用域>局部作用域>全局作用域>内置模块作用域

C.内置模块作用域>局部作用域>外部嵌套作用域>全局作用域

D.内置模块作用域>外部嵌套作用域>局部作用域>全局作用域

解析:

       局部作用域,也就是我们在函数中定义的变量;嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;全局变量,就是模块级别定义的变量;系统内置模块里面的变量,比如int, bytearray等。


牛客网专项练习30天Pytnon篇第24天_第1张图片

 

 

你可能感兴趣的:(牛客,python,开发语言,后端)