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

1.Python函数如下,则输出结果为:(A)

def chanageList(nums):
    nums.append('c')
    print("nums", nums)
str1 = ['a', 'b'] 
chanageList(str1)
print("str1", str1)

A.nums ['a', 'b', 'c'],str1 ['a', 'b', 'c']

B.nums ['a', 'b', 'c'],str1 ['a', 'b']

C.nums ['a', 'b'],str1 ['a', 'b']

D.nums ['a', 'b'],str1 ['a', 'b','c']

解析:

       在调用chanageList()函数时,str1 作为参数传入该函数后执行 append()函数添加字符 ‘c’,虽然传递给变量nums但其表示的就是str1,因此A正确。


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

def w1():
	print('正在装饰')
	def inner():
		print('正在验证权限')
	return inner()
w1()

A.正在装饰 正在验证权限   

B.正在装饰 

C.正在验证权限 

D.运行错误

解析:

       w1()首先执行内部自身打印输出打印“正在装饰”,然后w1()调用inner(),执行inner()内部打印输出打印“正在验证权限”;最终分别打印正在装饰和正在验证权限。


3.执行以下程序,结果输出为:(A)

a = [1]
b = 2
c = 1
def fn(lis,obj):
	lis.append(b)
	obj = obj + 1
	return lis,obj
fn(a,c)
print(fn(a,c))

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

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

C.([1, 2], 2)

D.([1, 2], 3)

解析:

       当参数为可变对象时,传参采用的是引用传递,修改形参将对实参造成影响;当参数为不可变对象时,传参采用的是值传递,修改形参对实参无影响,实参a为可变对象,实参c为不可变对象,故选项A正确。


4.执行以下程序,输出结果为:(A

def outer(fn):
	print('outer')
	def inner():
		print('inner')
		return fn
	return inner
@outer
def fun():
	print('fun')

A.outer   

B.inner   

C.fun  

D.无输出

解析:

       装饰器的一个关键特性是,它在被装饰函数定义后被立即执行,因此运行装饰函数outer,输出结果为outer,内部函数inner没有调用,不会输出任何结果,被装饰函数同样也不会运行,故A选项正确。


5.如下程序的运行结果为:(A)

def func(s, i, j):
	if i < j:
		func(s, i + 1, j - 1)
		s[i],s[j] = s[j], s[i]

def main():
	a = [10, 6, 23, -90, 0, 3]
	func(a, 0, len(a)-1)
	for i in range(6):
		print(a[i],end = ' ') 
main()

A.3 0 ‐90 23 6 10

B.3 0 ‐60 23 6 10

C.6 10 3 0 ‐90 23

D.6 10 3 0 -23 23

解析:

       首先调用main() 函数内,已经定义了一个列表 a ,传入到func函数内,第一次传入的参数中  i,j 分别代表列表的首位、末尾值。即i = 0 ,j = 5  此时满足  i<j ,则此时调用 满足的条件 ,又调用func ,此时传入的参数为 a、1,4 。这时需要执行函数,而不能往下执行,即暂不可执行第一次的 交换元素 s[0],s[5] = s[5],s[0];执行内部函数 func(a,1,4)  则也满足 1<4  此时还需要再调用 func(a,2,3) .暂不执行 s[1],s[4]] =  s[4],s[1];再执行内部函数 func(a,2,3) ,还是满足2<3 此时还需要再调用 func(a,3,2) .暂不执行 s[2],s[3]] =  s[3],s[2];再执行内部函数func(a,3,2),此时不满足 3<2 . 即不执行任何内容。此时内部循环函数全部结束。再往上推;上一步内部函数执行完后,则执行交换s[2],s[3]] =  s[3],s[2]. 再往上推;s[1],s[4]] =  s[4],s[1],再往上推;s[0],s[5] = s[5],s[0] 。即全部func结果结束。即交换了各个位置的元素。第一个变成最后一个、第二个变成倒数第二个、第三个变成倒数第三个。原来的 a = [10,6,23,-90,0,3],交换后的 a = [3,0,-90,23,6,10],for循环打印出a列表元素,故选项A正确。


209a19960f664dfe8c0ee8cc94fd0f20.jpeg

 

 

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫步桔田

编程界的一枚小学生!感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值