牛客网专项练习30天Pytnon篇第25天
1.Python3执行以下程序,输出结果为:(C)
def outer():
def inner():
print('inner',end=" ")
print('outer',end = " ")
return inner
outer()
A.inner outer
B.inner
C.outer
D.outer inner
解析:
调用函数outer,会输出outer并且返回值是inner函数,inner并没有调用,因此不会执行inner函数的语句块。
2..Python3如下代码,执行结果为:(A)
def f(x):
if x == 0:
return 0
elif x == 1:
return 1
else:
return (x*f(x-1))
print(f(5))
A.120
B.720
C.24
D.64
解析:
Python的递归题,解题思路一样的,求5的阶乘,也就是5!=5*4*3*2*1=120
3..Python3执行下面代码,请问输出结果为(A)
name = "顺顺"
def f1():
print(name)
def f2():
name = "丰丰"
f1()
f1()
f2()
A.顺顺 顺顺
B.丰丰 丰丰
C.顺顺 丰丰
D.丰丰 顺顺
解析:
首先f1()相当于调用两次f1()函数,由于f1()函数体内没有局部变量name,所以引用全局变量name,故打印两次“顺顺”;f2()函数体内有局部变量name所以f2()函数体内优先使用局部变量name,因f2()函数内没有打印输出,所以不会打印f2()结果。
4..Python3执行下面代码,请问输出结果为:(D)
counter = 1
def number():
global counter
for i in (1, 2, 3):
counter += 1
number()
print(counter)
A.1
B.2
C.3
D.4
解析:
在变量前加global代表修改的是全局变量, 原counter=1,三次循环+1故=4, 函数执行完,全局变量被修改=4。
5..Python3执行以下代码,结果输出为:(A)
num = 1
def fn():
num += 1
return lambda:print(num)
x = fn()
x()
A.报错
B.1
C.None
D.2
解析:
虽然在函数外部声明num 为全局变量,但若函数体内对num变量重新赋值,其结果会使得函数内部屏蔽了外面的全局变量num,此时语句num += 1就会抛出异常,即num变量没有先赋值就直接引用。