当前位置:   article > 正文

第二周python牛客练习题_在python3中,程序运行结果为: lists = [1, 1, 2, 3, 4, 5, 6]li

在python3中,程序运行结果为: lists = [1, 1, 2, 3, 4, 5, 6]lists.remove(1) lists.extend([7,8,9]) print(lists)

牛客刷题(只记录错题难题!!)

1.以下程序输出为:

  1. def w1():
  2. print('正在装饰')
  3. def inner():
  4. print('正在验证权限')
  5. return inner()
  6. w1()

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

先调用w1()函数,执行print('正在装饰')

再定义inner()函数,返回时再调用inner()函数,和使用语句print('正在验证权限')打印

2. 有如下函数定义,执行结果正确的是?

  1. def dec(f):
  2. n = 3
  3. def wrapper(*args,**kw):
  4. return f(*args,**kw) * n
  5. return wrapper
  6. @dec
  7. def foo(n):
  8. return n * 2

A.foo(2)==12                        B.foo(3)==12

C.foo(2)==6                         B.foo(3)==6

装饰器语法,使得在不改变调用方式的情况下改变函数功能

不过不是很明白具体为什么不直接修改原函数功能

链接:装饰器 

3.以下程序输出为:

  1. # -*- coding:utf-8 -*-
  2. def test(a, b, *args):
  3. print(a)
  4. print(b)
  5. print(args)
  6. 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)

这题可以看出,对于使用*作为形参,会将后面的元素变成元组,所以args是元组 

4.在Python3中,有关字符串的运算结果为:

  1. strs = 'I like python and java'
  2. one = strs.find('n')
  3. print(one)
  4. two = strs.rfind('n')
  5. print(two)

 C.12,15

find ()从前往后,第一个目标字符下标

rfind()从前往后,最后一个目标下标

5.已知print_func.py的代码如下:

  1. print('Hello
  2. World!')
  3. print('__name__
  4. value: ', __name__)
  5. def main():
  6. print('This message is from main function')
  7. if __name__ ==
  8. '__main__':
  9. main()

 print_module.py的代码如下:

  1. import print_func
  2. print("Done!")

运行print_module.py程序,结果是:

A. Hello World! __name__ value: print_func Done!

因为__name__只显示所在文件的文件名,如果所在文件文件名与程序名称相同则表现为__main__

6.执行下列程序,输出结果为()

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

C.报错

当函数的的形参单独为*时,它并不属于未匹配的位置参数,而是表示后面的参数必须使用关键字参数进行匹配,所以这里会抛出异常。

所以正确的调用方式应当是fun(1,b=3)

输出为3

7.在Python3中,下列程序运行结果为:

  1. dicts = {}
  2. dicts[(1, 2)] = ({3, (4, 5)})
  3. print(dicts)

B.{(1, 2): {(4, 5), 3}}

首先字典的键为一个元组(1,2)这个没有问题

然后右边就是值,为一个集合!!!会自动根据hash值由大到小排序

所以右边的集合表现为{(4,5),3}

8.假设可以不考虑计算机运行资源(如内存)的限制,以下 python3 代码的预期运行结果是:()

  1. import math
  2. def sieve(size):
  3. sieve= [True] * size
  4. sieve[0] = False
  5. sieve[1] = False
  6. for i in range(2, int(math.sqrt(size)) + 1):
  7. k= i * 2
  8. while k < size:
  9. sieve[k] = False
  10. k += i
  11. return sum(1 for x in sieve if x)
  12. print(sieve(10000000000))

 我投降,我怎么知道有多少个555

numba加速

9.执行下列选项中的程序,输出结果为False的是()

A.

  1. t1 = (1,2,3)
  2. t2 = t1[:]
  3. print(t1 is t2)

B.

  1. lis1 = [1,2,3]
  2. lis2 = lis1[:]
  3. print(id(lis1)==id(lis2))

C.

  1. s1 = '123'
  2. s2 = '123'
  3. print(s1 is s2)

D.

  1. a = 123
  2. b = 123
  3. print(id(a) == id(b))

 元组进行复制不会创建新的副本

列表进行复制会创建新的副本

10.根据以下程序,下列选项中,说法正确的是()

  1. class Foo():
  2. def __init__(self):
  3. pass
  4. def __getitem__(self,pos):
  5. return range(0,30,10)[pos]
  6. foo = Foo()

A.foo对象表现得像个序列

B.foo对象表现得像个序列

C.可以使用for i in foo:print(i)来遍历foo的元素

D. 可以使用for i in foo:print(i)来遍历foo的元素

解析:

若要表现像个序列,必须满足序列的两个方法:__len__和__getitem__,由于Foo类中没有实现__len__,因此不满足序列协议,foo对象不像序列,A错误;

foo对象没有定义__len__方法,不能使用它来查看对象个数,B错误;

对对象的迭代需要调用__iter__,如果没有定义该方法,python会调用__getitem__(),让迭代和in运算符可用,因此foo是可迭代的,C正确;

根据索引访问对象元素,会调用__getitem__(),因此D错误。

11.根据以下代码,下列选项中,说法正确的是()

  1. class Rectangle:
  2. __count = 0
  3. def __init__(self,width,height):
  4. Rectangle.__count += 1
  5. self.__width = width
  6. self.__height = height
  7. @property
  8. def area(self):
  9. return self.__height * self.__width
  10. rectangle = Rectangle(200,100)

A.创建实例对象rectangle后,可在类外使用rectangle.area()来访问area属性

B.area属性为对象的非私有属性,可以访问和修改

C.变量__count的作用是为了统计创建对象的个数

D.因为__width和__height为私有变量,所以在类外不可能访问__width和__height属性

 解析:

使用@property将方法转为属性,该属性为只读属性,只可访问但是不可以修改,使用对象.方法名来访问该属性,但是方法不能再加小括号,故AB选项说法均错误;

12.在Python3中,程序运行结果为:

  1. lists = [1, 1, 2, 3, 4, 5, 6]
  2. lists.remove(1)
  3. lists.extend([7,8,9])
  4. print(lists)

 C.[1,2,3,4,5,6,7,8,9]

remove()函数用于移除列表中某个值的第一个匹配项。

extend函数是将新列表值依次添加到老列表末尾

13.在Python3中,下列答案正确的是:

  1. lists = [1, 2, 2, 3, 4, 5]
  2. print(lists.index(2))

A.1

解析:

 在Python3中,list.index(obj)表示从列表中找出某个值第一个匹配项的索引位置,且列表的索引是从 0 开始的,所以返回 2 所在的第一个索引为 1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/213279
推荐阅读
相关标签
  

闽ICP备14008679号