特辑:Python理论考试样卷及解析

一、判断题
1. 2.1-2 == 0.1结果为True。

解析:错误。因为在计算机中,对浮点数进行存储是以近似小数的形式进行。因此在计算机求解2.1 – 2 时所得的不是0.1,而是一个与 0.1 非常相近的数字但是不是 0.1 ,所以返回值为False。

2. 高级语言程序要被机器执行,只有用解释器来解释执行。

解析:错误。因为在计算机中,高级语言所编制的程序不能被直接识别,必须经过转化才能执行。按转换方式可将它们分为两类: 解释类:执行方式类似于我们日常生活中的“ 同声翻译 ”,应用程序源代码一边由相应语言的解释器“翻译”成目标代码 (机器语言),一边执行,因此效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(* .OBJ)才能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型的,例如Visual C++、Visual Foxpro、Delphi等。

3. z已赋值,x=(y=z+1)语句是错误语句。

解析:错误。赋值语句的右侧不能的是一个等式,只能是一个可以求值的式子。

4. 元组对象是可变对象

解析:错误。python 中的不可变对象有整型 (int),浮点型 (float),字符串型 (str), 元组 (tuple)等等,而可变对象有列表 (list),集合 (set), 字典 (dict)等等。

5. 3>2>=2 的值为True。

解析:正确。3>2 判别式和 2>=2 判别式返回值均为True,则总式返回值为True。

6. Python字符串以’0’为结束符。

解析:错误。Python的字符串不是以“\0”结尾。

7. 在三引号的字符串中可以包含单引号,双引号字符。

解析:正确。对于Python中的引号,有格式为:单引号字符串:’python’,双引号字符串:”python”,三引号字符串:”’python”'(三单引号),”””python”””(三双引号)。

而会有这样的输出效果:单引号中可以使用双引号,中间的会当作字符串输出,双引号中可以使用单引号,中间的会当作字符串输出,三单引号和三双引号中间的字符串在输出时保持原来的格式。

8. dict={[1,2,3]:”user”}不能创建一个字典。

解析:正确。Python不支持dict的key为list或dict类型,因为list和dict类型是unhashable(不可哈希)的,故不能创建一个字典的语句是dict3 = {[1,2,3]: “uestc”}。

9. 下面语句是正确的。
x=5
y=6
if(x>y)
    print(x)

解析:错误。在if 语句后未加上“:”。

10. 变量不需事先声明就可使用。 

解析:正确。Python中的变量不需要申明就可以直接使用。

二、选择题

1. 下面那个不是Python可以接受的变量名?

A. abc        B. _23ac        C. i        D. good-name

解析:D。Python的变量名不能包含“-”等特殊字符开头。

2. 输入10,下面程序行号为2的语句输出是多少?

the_max = int(input("Enter the upper limit:"))
the_sum = 0
extra = 0
for number in range(1,the_max):
    if number%2 and not number%3:
       the_sum = the_sum + number
    else:
       extra = extra + 1
print(the_sum) # 行号为 2
print(extra) # 行号为 3

A. 12        B.7        C.13        D.8

解析:A。对于number%2 and not number%3的判别,为number%2 不为0 而 number%3 为0时成立,所以在sum里面求的是3+9=12 。 

3. 下面哪种方法读文件“input.txt”是正确的.

A.in_file = open(‘input.txt’,’w’)

B.in_file = open(‘input.txt’,r)

C.in_file = open(‘input.txt’,’r’)

D.都不正确.

解析:C。对于打开文件使用函数open,而函数中使用的后缀在只用于读时则为用‘w’,而用于写则为‘w’。

4. continue语句用于______.

A.退出循环程序        B.结束本次循环        C.空操作        D.根据if语句的判断进行选择

解析:B。continue表示结束本次循环然后继续执行循环程序中的下一次(步)。

5.下面定义字典的语句那个是正确的?

A.momthdays=dict(Jan=31,Feb=28,Mar=31,Apr=30)

B.momthdays=dict(“Jan”=31,”Feb”=28,”Mar”=31,“Apr”=30)

C.momthdays={Jan:31,Feb:28,Mar:31,Apr:30}

D.momthdays={Jan=31,Feb=28,Mar=31,Apr=30}

解析:A。dict为字典类型,则在定义时需要用“()”来将值赋入其中。而在赋值时,需要将键(keys)和对应的值(values)用等号连接。

6.2K字节是_____个字节。

A.1024        B.1        C.2048        D.10000

解析:C。1KB占用1024字节,则2K = 2KB为占用2048字节。

7.下面语句解释器将抛出什么错误信息?

s=[1,2,3]
y=s[3]

A.NameError        B.IndexError        C.SyntaxError        D.TypeError

解析:B。显然,s=[1,2,3]列表中只有0,1,2三个位置上有值,而y=s[3]要返回的位置超过了s已存储值的上边界,故返回的是越界报错(IndexError)

8.下面代码的输出结果是_____。

a=666666
b="T"
print("{0:{2}^{1}}\n{0:{2}>{1}}\n{0:{2}<{1}}".format(a,20,b))

A.TTTTTTT666666TTTTTTT
   TTTTTTTTTTTTTT666666
   666666TTTTTTTTTTTTTT

B.666666TTTTTTTTTTTTTT
   TTTTTTTTTTTTTT666666
   TTTTTTT666666TTTTTTT

C.TTTTTTTTTTTTTT666666
   666666TTTTTTTTTTTTTT
   TTTTTTT666666TTTTTTT

D.TTTTTTTTTTTTTT666666
   TTTTTTT666666TTTTTTT
   666666TTTTTTTTTTTTTT

解析:A。表现为三种输出格式,第一个“^”指居中,第二个“>”指向右对齐,第三个“<”指向左对齐,而空余空间用{2}(也就是b = T)来填满。

9. 下列程序运行输出结果为_______。

import math
def factors(x):
    y=int(math.sqrt(x))
    for i in range(2,y+1):
       if (x %i ==0):
            print(i,end=' ');
            factors(x//i)
            break
       else:
           print(x,end=' ')
    return
factors(18)

A.3 2 3        B.2 9 3        C.3 6 3        D.2 3 6

解析:B。输入18,而为y是4。则在i = 2时,满足18%2 == 0 ,则先输出i = 2,再进行factor(9)。而此时y是3,则在i = 2时,不满足9%2 == 0,则进行输出x = 9 。 在i = 3时,有满足9%3 == 0,则进行输出i = 3,在进行factor(3)。而此时y = 1小于2,循环不执行,程序结束。

10.下面程序的运行结果是什么?

b=[1,2,3]
b[2]=b
s = 0
for row in b:
    if type(row)==list:
        for elem in row:
            s += elem
    else:
        s+=row
print(s)

A.9        B.10        C.8        D.其他

解析:D。程序运行的结果是TypeError: unsupported operand type(s) for +=: ‘int’ and ‘list’

11.选择下面程序的运行结果

number = 25
isPrime = True
for i in range(2, number):
  if number % i == 0:
    isPrime = False
    break
print("i is", i, "isPrime is", isPrime)

A.i is 5 isPrime is True

B.i is 5 isPrime is False

C.i is 6 isPrime is True

D.i is 6 isPrime is False

解析:B。程序是判别是否是素数的程序,在输入25后,循环进行到i = 5时,有得到25%5 == 0,即5是25的因子之一,于是输出为i is 5 isPrime is False。

12. 下列程序运行输出结果为_______。

day=4
x=1
while day>0:
    x=(x+1)*2
    day-=1
print(x)

A.22        B.46        C.47        D.45

解析:B。输入day = 4,而每次循环都是day的值减1,所以执行四次 x=(x+1)*2操作即可。

13.下列程序运行输出结果为_______。

b,c=2,4
def g_func():
    b=1
    b=b*c
    d=b
    print(b,d,end='  ')
g_func()
print(b,c)

A.4 4 2 4        B.4 4 4 4        C.4 2 4 4        D.2 4 2 4

解析:A。这显然是一个局部变量和全局变量的覆盖问题。在运行函数中对b的值进行的改变并不会对于其在整个程序中b的值进行改变,所以先在函数中输出b=4和c=4,之后再执行最后一行的输出语句,得到b=2,c=4 。

14.以下哪句打印出smith\exam1\test.txt?

A.print("smith\exam1\test.txt")

B.print("smith\\exam1\\test.txt")

C.print("smith\"exam1\"test.txt")

D.print("smith"\exam1"\test.txt")

解析:B。对于Python中,若是想要输出“\”号,需要用\\来表示(前一个用于表示转义字符)。

15.对于正确的表达式a[2],a不可能是以下哪个类型?

A.集合        B.列表        C.元组        D.字典

解析:A。集合是不支持所以,切片,相加,相乘操作的,所以不能这样获取集合内的元素。若是想获取集合里面的某一个元素需要进行转化,比如把即可转成列表再获取内容等等。

 三、填空题

1.执行下列语句后v的显示结果是什么?

values = [[3, 4, 5, 1], [33, 6, 1, 2]]

v = values[0][0]
for row in range(0, len(values)):
    for column in range(0, len(values[row])):
        if v < values[row][column]:
            v = values[row][column]
print(v)

答案:33 

2.输入为‘dbc’时,行号为3的语句输出是多少?

my_str = input("Input a string: ")
index_int = 0
result_str = '' # empty string
while index_int < (len(my_str) - 1): 
   if my_str[index_int] > my_str[index_int + 1]:
     result_str = result_str + my_str[index_int]
   else:
     result_str = result_str * 2
   index_int += 1 
print(result_str) # 行号为 3

答案:dd 

3. Python的数学模块是什么?

答案:math

4. 执行下列语句后的显示结果是什么?

sum = 0
item = 0
while item < 5:
    item += 1
    sum += item
    if sum > 4: break

print(sum)

答案:6

5.下面程序计算斐波那契数,在下划线处填上正确的表达式

def fastFib(n, memo = {}):
    if n == 0 or n == 1:
        return 1
    try:
        return memo[n]
    except KeyError:
        result = fastFib(n-1, memo) + fastFib(n-2, memo)
        ____________= result
        return result

print(fastFib(20))

 答案:memo[n] 

6.下面语句的输出是什么?

list1=[1,43]
list2=list1
list1[0]=22
print(list2[0])

答案: 22

7. 下面语句的输出是

m=[2,1,0,5,3,5,7,4]
def naive(M,A=None):
    if A is None:
        A=set(range(len(M)))
    if len(A)==1:return(A)
    B=set(M[i] for i in A)
    C=A-B
    if C:
        A.remove(C.pop())
        return naive(M,A)
    return A
print(sum(list(naive(m))))

答案:8

8.下面语句的结果是什么?

print(len(set([1,2,1,2,3])))

 答案:3

9. 表达式:—3*2+5的值是

答案:-1

10.运行下面程序的输出结果是

d1=[1,5,7]
d2=d1.copy()
d1[0]=6
print(d1[0]+d2[0])

答案:7

11.文件populationdata.txt是部分国家的人口数据。每行一个国家人口数据。统计人口数中以“1”开头的百分比数,“2”开头的百分比数,“3”开头的百分比数,“4”开头的百分比数,“5”开头的百分比数,“6”开头的百分比数,“7”开头的百分比数,“8”开头的百分比数,“9”开头的百分比数。下面结果表示[(1, 27.586206896551722), (2, 19.396551724137932), (3, 12.931034482758621), (4, 9.482758620689655),(5, 7.327586206896552), (6, 9.051724137931034),(7,5.603448275862069), (8, 5.172413793103448),(9, 3.4482758620689653)],“1”开头的百分比数27.586206896551722,“2”开头的百分比数19.396551724137932,以此类推!下面是程序。

populationfile=open('populationdata.txt',_(1)_)
digit_counts={d:0 for d in "123456789"} 
total=0
for line in _(2)_:
     line=line.strip()     
     if line and _(3)_:    
         first_digit=line[0]    
         digit_counts[first_digit]+=1        
         total+=1   
percents=sorted([(int(digit),count*100/total)  for digit,count in digit_counts.items()])
print( percents)

在下面9个答案中选择,空格中填编号,如A等。

A) digit_counts       B)   'w'                 C) digit_count
D) line[1].isalpha()  E)  line[0].isalnum()  F)  'a'
G) line[0].isdigit()    H)   'r'          I)  populationfile

(1)的答案是:H

(2)的答案是:I

(3)的答案是:G

12.统计字符串中各字符出现次数

mstr = "Hello world, I am using Python to program, it is very easy to implement."
mlist = list(mstr)
___(1)___
___(2)___
    if mdict.get(e,-1)==-1:
        mdict[e]=1
    else:
        mdict[e]+=1
for key,value in ___(3)___:
    print (key,value)

可在下面9个答案中选择,空格中填编号,如A等

A)mdict.values()           B)mdict.items()          C) mdict.keys()
D) mdict = {}               E)mdict = []             F) mdict = ()
G)for key in mlist:         H)for e in mlist:        I) for value in mstr:

(1)的答案:D
(2)的答案:H
(3)的答案:B

13. 下面程序随机生成10个整数,将它们从大到小排序后输出。如有多个答案可选,选顺序在先的答案。

from random import * 

def sort1(___(1)___):
  for k in range(n-1):
    index = k
    for i in ___(2)___:
      if(a[i] > a[index]):
            index = i 
    a[k],a[index]=a[index],a[k]
c=[]
for i in range(10):
    b=randint(1,10000)
    c.append(b)
___(3)___
print(c)    

在下面9个答案中选择,空格中填编号,如A等。

A)range(k,n)               B)range(k+1,n-1)          C)  a,  n-1
D) a, n                     E)sort1(c)                  F) sort1(c[], 10) 
G)a[]                       H)range(k+1,n)            I) sort1(c, 10)

(1)的答案是:D
(2)的答案是:H
(3)的答案是:I

14. 输入一个十进制正整数,将它对应的二进制数的各位反序,形成新的十进制数输出。如有多组答案可选,则选答案字符序在先的那组答案。
如:13–>1101–>1011–>11
如:10–>1010–>0101–>5

x=eval(input())
y=0
while(___(1)___):   
  t=x%2
   ___(2)___    
   ___(3)___    
print(y)

在下面9个答案中选择,空格中填编号,如A等。

 A) x          B) x or y              C) not x 
 D) y=y*10+t   E) y *= 2 + t        F) y = y//2 
 G) x= x //10  H) x= x // 2         I) y = y*2+t

(1)的答案是:A
(2)的答案是:I
(3)的答案是:H

15.10进制转16进制

decimal = eval(input("Enter an integer: "))
hexString = ""
value = ___(1)___
while value != 0:
    single = value % 16
    if single == 15: 
        hexString = "F" + hexString
    elif single == 14:
        hexString = "E" + hexString
    elif single == 13:
        hexString = "D" + hexString
    elif single == 12:
        hexString = "C" + hexString
    elif single == 11:
        hexString = "B" + hexString
    elif single == 10:
        hexString = "A" + hexString
    else:
        hexString = ___(2)___+ hexString
    value = ___(3)___
print(str(decimal) + "'s hex representation is " + hexString)

在下面9个答案中选择,空格中填编号,如A等。

A)single  B) decimal   C) hexString D) value/16   E) value//16  F)value%16     G) str(single)  H)str(hexSting)  I)singles

(1)的答案是:B

(2)的答案是:G

(3)的答案是:E

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年12月21日
下一篇 2023年12月21日

相关推荐