试卷 2021年9月青少年软件编程Python等级考试(五级)试卷
2021年9月青少年软件编程Python等级考试(五级)试卷
单选题
第 1 题    单选题

执行下列代码,正确的答案是?(  

  >>> l=[10,0,1,6,12,8]   

  >>> l.sort(key=str)   

  >>> l  

A.

[0,1,6,8,10,12]

B.

[0,1,10,12,6,8]

C.

[0,1,10,6,8,12]

D.

[12,10,8,6,1,0]

第 2 题    单选题

m=[x*x for x in range(5) ]的结果的是?( )

A.

25

B.

16

C.

[0, 1, 4, 9, 16]

D.

(0, 1, 4, 9, 16)

第 3 题    单选题

求执行下列操作后的正确结果?(  

  >>> url='www.lxsz.com'  

  >>> url.split() 

A.

('www.lxsz.com')

B.

['www’,’lxsz’,’com']

C.

['www.lxsz.com']

D.

('www’,’lxsz’,’com')

第 4 题    单选题

下列声明字典的语句,错误的是?(

A.

d={}

B.

d={'name':'Tom','age':20,"salary":3900}

C.

d=dict(title='Python',author='Tom',price=59)

D.

d=list[('name','Jerry'),('age',20)]

第 5 题    单选题

 print(‘\x61’)的结果是?( )

A.

\x61

B.

‘\x61’

C.

a

D.

A

第 6 题    单选题

随机产生1-5之间的一个整数的代码是?( )

A.

>>>import random  

  >>>random.randrange(1,6) 

B.

>>>import random  

  >>>random.randrange(1:6) 

C.

>>>import random  

  >>>random.randchoice(1,5) 

D.

>>>import random  

  >>>random.randint(1,5) 

第 7 题    单选题

下列语句的输出结果是?(    

for  i  in range(6):   
  if i%2==0:   
      continue   
  else:   
      print(i,end=’,’)
A.

1,3,5,

B.

1,3,5

C.

0,2,4,

D.

0,2,4

第 8 题    单选题

以下列表对象的表达,非法的或者值为False的选项是?( )

A.

[]

B.

[None,0,’’]

C.

[1,2,3]

D.

[8,]!=[8]

第 9 题    单选题

要生成如下效果的图片,可以使用以下哪个python库?( )

A.

jieba

B.

math

C.

matplotlib

D.

wordcloud

第 10 题    单选题

有关jieba库的描述,错误的是?( )

A.

jieba库的分词原理是利用英文词库,将待处理的内容与词库比对后找到最大概率的词组

B.

jieba.lcut(s)返回的是一个列表类型

C.

jieba.cut(s)返回的可能是一个元组类型

D.

jieba.add_word(w)向分词词典中增加新词w

第 11 题    单选题

方法pop()与remove()的区别与相同点,错误的是?(   )

A.

都是删除与参数表中参数相同的元素

B.

pop()有返回值

C.

remove()没有返回值

D.

pop()如果不带参数,则表示默认参数值为-1

第 12 题    单选题

赋值语句path='c:\abc\xyz\tag.txt',执行结果是?( )

A.

path的值是'c:\abc\xyz\tag.txt'

B.

path的值是'c:\bc\yz\ag.txt'

C.

path的值是'c:\\abc\\xyz\\tag.txt'

D.

提示出错

第 13 题    单选题

下列语句的输出结果是?(   

  l=list(range(1,3))   

  print(l)  

A.

[0,1,2]

B.

{0,1,2}

C.

[1,2]

D.

.{1,2}

第 14 题    单选题

运行下列代码,正确的结果是?(  

  >>>x = set('runoob')  

  >>> y = set('google')  

  >>> x & y  

A.

{‘o’,’o’}

B.

{'r', 'b', 'u', 'n'}

C.

{'b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'}

D.

{'o'}

第 15 题    单选题

使用map函数可以实现列表数据元素类型的转换,而无需通过循环。则将列表l=['2','4','6','8']转换为列表[2,4,6,8]的函数写法为?( )

A.

map(int,l)

B.

list(map(int,l))

C.

map(l,int)

D.

list(map(l,int))

第 16 题    单选题

运行下列代码,正确的结果是?(  

   >>>print("{:.2f}".format(3.1415926)) 

A.

’3.1’

B.

3.1

C.

’3.14’

D.

3.14

第 17 题    单选题

下列元组的声明,非法的是哪一项?(

A.

t=1,2,3

B.

t=(1,2,3)

C.

t=(1,)

D.

t=(1)

第 18 题    单选题

运行下列代码的结果是?(  

  import  math   

  math.ceil(-3.3)  

A.

-4

B.

-3

C.

-4.0

D.

-3.0

第 19 题    单选题

下列有关列表的描述,错误的是?(

A.

列表是包含若干元素的随机内存空间

B.

列表是包含若干元素的有序内存空间

C.

列表是包含若干元素的连续内存空间

D.

列表的相邻元素之间使用逗号分隔

第 20 题    单选题

下列操作,正确的为哪一项?(

A.

>>>tuple(‘ni hao’)  

  >>>(‘ni’,’hao’) 

B.

>>>tuple(range(3))  

  >>>(0,1,2) 

C.

>>>tuple(str,range(3))  

  >>>(0,1,2) 

D.

>>>tuple(map(str,range(3)))  

  >>>(0,1,2) 

第 21 题    单选题

下列语句的输出结果是?(   

  for  i  in “xyz”:   
  for j in range(3):   
      print(i,end=’ ’)   
  if  i==”z”:   
  break
A.

xxxyzzz

B.

xxxyyyz

C.

xxxyyyzzz

D.

xyyyzzz

第 22 题    单选题

下列代码的运行结果是?(  

def jishu(n):  
      return n % 2 == 1  
  newlist = filter(jishu, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])  
  n=list(newlist)  
  print(n)
A.

[2,4,6,8,10]

B.

[1, 3, 5, 7, 9]

C.

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

D.

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

第 23 题    单选题

对于r=range(5),下列合法的方法是?( )

A.

r[2]=8

B.

del r[2]

C.

r.pop()

D.

r.count(2)

第 24 题    单选题

下列说法,正确的是?(

A.

集合类型是一个元素集合,元素之间有序

B.

集合类型是一个元素集合,元素不能重复

C.

集合类型是一个元素集合,元素可以重复

D.

集合类型是一个元素集合,元素之间无序,元素类型必修相同

第 25 题    单选题

d是一个字典,则max(d)是指求?( )

A.

字典中键的最大值

B.

字典中值的最大值

C.

字典中键值对的最大值

D.

字典中数字值的最大值

判断题
第 26 题    判断题

对于列表l=[0,1,2,3,4],all(l)的值是True,any(l)的值是False。

A.
正确
B.
错误
第 27 题    判断题

>>>list(zip(range(3),"abcd"))   

返回[(0, 'a'), (1, 'b'), (2, 'c'),(3,’d’)]。

A.
正确
B.
错误
第 28 题    判断题

利用日期时间模块datetime,可以获取“今天”的日期,方法如下:   

  >>> import datetime  

  >>> t=datetime.today()。

A.
正确
B.
错误
第 29 题    判断题

>>>m=’\n\nnihao\t\tliping\n\n\nzhang san’  

  >>> m.split()   

  结果是:['nihao', 'liping', 'zhang san']。 

A.
正确
B.
错误
第 30 题    判断题

列表、元组、字符串均可以用set()转换为集合,例如:>>>set((1,2,2,3,4)),结果是{1,2,2,3,4}

A.
正确
B.
错误
第 31 题    判断题

>>> list(enumerate(range(3)))   

  返回值为[(0, 0), (1, 1), (2, 2)]。 

A.
正确
B.
错误
第 32 题    判断题

字典中的“键”不允许重复,“值”也不允许重复。in运算符的速度比列表、元组快得多。

A.
正确
B.
错误
第 33 题    判断题

下列两个语句的功能不可能等价:  

  >>> l=[x*x for x in range(6)]   

  >>> l=list(map(lambda x:x*x,range(6)))。 

A.
正确
B.
错误
第 34 题    判断题

set()函数可以用于生成集合,输入的参数可以是任意组合数据类型,返回结果是一个无重复且排序任意的集合。

A.
正确
B.
错误
第 35 题    判断题

>>> '{0:%}'.format(3.5)返回'350.000000%';  

  >>>’{0:.2f}’.format(1/5)返回'0.2'。 

A.
正确
B.
错误
编程题
第 36 题    问答题

简单去重问题:  

  对于给定的列表,要求对列表中每个重复元素只输出一次,请你编程完成这个任务。  

  例如:对于测试列表a=[11,1,14,23,11,89,14,56,89]  

  有如下3种算法,请你补全代码。  

      #方法1  
      a=[11,1,14,23,11,89,14,56,89]  
      result=[] 
      for i in a: 
          if i not in result:  
              ①        
      print("方法1:",result)  
      #方法2  
      a=[11,1,14,23,11,89,14,56,89]  
      for i in [j for j in a if a.count(i)>1]:  
          for x in range(a.count(i)-1):  
              ②       
      print("方法2:",a)  
      #方法3  
      a=[11,1,14,23,11,89,14,56,89]  
      i=0  
      while i<=len(a)-1:  
          if a.count(a[i])>1:  
              ③         
          else:  
              ④         
      print("方法3:",a)
第 37 题    问答题

密码问题:  

根据密码本和电子钥匙,破解笔记本电脑的密码。  

密码本是一个非降的整数序列,电子钥匙是一个整数,得到密码的方法是在密码本中找到最接近电子钥匙的整数(如果多个符合条件,输出最小的一个)。  

例如:  密码本为下面的列表 

a=[1,22,43,45,45,55,60,70,89]  

电子钥匙为整数44  

满足条件的整数为43和45,最终的密码为43 

补全下面的代码:  

a=[1,22,43,45,45,55,60,70,89] #密码本
 k=int(input())   #k为电子钥匙
 l=0
 r=8
 while l+1!=r:
     mid=int (   ①  )
     if a[mid]<k:
            ②    
     else:
         r=mid
     if a[r]==k:
           ③      
 if k-a[l] <=     ④   :
      print(a[l])
 else:
     print(⑤)
第 38 题    问答题

罗马数字问题:    

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。  

27写做 XXVII,即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减去数 1 得到的数值 4。同样地,数字 9 表示为 IX。  

这个特殊的规则只适用于以下六种情况:  

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。  

X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。  

C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。 

现编写输入一个罗马数字,输出其整数结果,请编程实现上述功能,或补全代码。  

例如,当输入XXII时,输出22;当输入MCMXC时,输出1990.  

rmdict = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000} 
 rm = list(input("请输入正确的罗马数字:"))
 num, prew = 0, 1
 for ch in rm[::-1]:
    w =     ①    
    if prew > w: 
       num = num - w 
    else :
       num = num + w
    prew =     ②    
 print(  ③  )
答题卡
单选题
判断题
编程题
36 37 38
题目总数:38
总分数:100
时间:90分钟