首页 > 技术文章 > [试题]Python大赛部分答案

-oreo 2018-11-25 19:40 原文

不定项选择:

1.执行x = [4,3][2>1]后, 请问 x 值为多少()
A.1 B.2 C.3 D.4

2.print('\\t\')输出结果为()
A. \ \ B. \\ \ C. \\\ \\ D. \\\t\\

3.定义域一个列表classmates = ['张三', '李四', '王五','赵六'],执行classmates[-1]后得到的结果是()
A.张三 B.赵六 C.SyntaxError D.UnicodeError

4.定义一个字典 d = {'Michael': 95, 'Jack': 75, 'Tracy': 85},执行 d['Jack'] = 90 后再执行 d['Jack'] = 88,字典中Jack的值为()
A.75 B.90 C.88 D.90,88

5.这个函数的作用是什么?函数类型是什么?()

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

A.求阶乘 B.开方 C.递归 D.迭代

6.定义域一个列表L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'],取前3个元素,应该怎么做?
A.[L[0], L[1], L[2]] B.[L[0], L[1], L[2],L[4]] C.L[0:3] D.L[:3]

7.与Python断言语句有关的是()
A.yield B.@ C.async D.assert

8.下列代码执行结果是?()
[i**i for i in xrange(3)]
A.[1, 1, 4]
B.[0, 1, 4]
C.[1, 2, 3]
D.(1, 1, 4)

9__new__和__init__的区别,说法正确的是?()
A.new__是一个静态方法,而__init__是一个实例方法
B.new__方法会返回一个创建的实例,而__init__什么都不返回
C.只有在__new__返回一个CLS的实例时,后面的__init__才能被调用
D.当创建一个新实例时调用__new
,初始化一个实例时用__init

10.Python中函数是对象,描述正确的是? ()
A.函数可以赋值给一个变量
B.函数可以作为元素添加到集合对象中
C.函数可以作为参数值传递给其它函数
D.函数可以当做函数的返回值

编程题:

1.生成list计算 [1x1, 2x2, 3x3, ..., 10x10]

答案:
方法一:普通方法
>>> L = []
>>> for x in range(1, 11):
...    L.append(x * x)
...
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

方法二:列表生成器
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

2.打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
 本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
思路:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

答案:

for n in range(100,1001):
    i = n / 100
    j = n / 10 % 10
    k = n % 10
    if i * 100 + j * 10 + k == i + j ** 2 + k ** 3:
        print "%-5d" % n

不定项选择题答案:

1.C

知识点:Python if 和 for 的多种写法

<1>常规

if a>b:

    c = a

else:

    c = b

<2>表达式

c = a if a>b else b 

<3>二维列表

c = [b,a][a>b]

2.A

知识点:转义字符

转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\,可以在Python的交互式命令行用print()打印字符串

3.B

知识点:列表

Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素
如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素

4.C

知识点:字典

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉

5.AC

知识点:递归函数

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数

6.ACD

知识点:切片

Python提供了切片(Slice)操作符
L[0:3]表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1,2,正好是3个元素
L[:3] 表示果第一个索引是0,还可以省略 

7.D

知识点:断言

assert断言语句用来声明某个条件是真的,其作用是测试一个条件(condition)是否成立,如果不成立,则抛出异常。

断言跟异常的区别:

断言是用来检查非法情况而不是错误情况的,用来帮开发者快速定位问题的位置。
异常处理用于对程序发生异常情况的处理,增强程序的健壮性和容错性。

对一个函数而言,一般情况下,断言用于检查函数输入的合法性,要求输入满足一定的条件才能继续执行;
在函数执行过程中出现的异常情况使用异常来捕获。

8.A

知识点:

(1)这是一个列表生成式,即对于生成器 xrange(3) 中的每个值(分别是0,1,2),赋值给变量 i,然后执行 i**i 的操作。

列表生成式 - 廖雪峰的官方网站
List Comprehension

(2)xrange() 与 range() 的用法完全相同,区别是 xrange() 的返回值是生成器,而 range() 的返回值是列表。

Python xrange() 函数
Python range() 函数

(3)Python 中的 ** 运算代表幂运算,但有个特殊情况,官方文档中把 0**0 的值定义为 1。

Numeric Types — int, float, long, complex

9.ABCD

知识点:面向对象

__init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
__new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。

即,__ new__在__init__之前被调用,__ new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。

10.ABCD

知识点:函数

在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量、可以作为元素添加到集合对象中、可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的。
参考https://www.cnblogs.com/smallmars/p/6936871.html

推荐阅读