中国电子学会2022年06月份青少年软件编程Python等级考试试卷五级真题(含答案)

2022-06 Python五级真题

分数:100

题数:38

测试时:60min

一、单选题(共25题,共50分)

1.Python中print("八进制{:o}".format(12))正确的输出结果是?(D)(2分)

A.八进制:O

B.八进制:O14

C.八进制14O

D.八进制14

答案解析:字符串的format()格式。

2.下列的程序为求10的阶乘,则在①处应填入的是?(D )(2分)

ans=1

for i in range(①):

    ans*=i

print(ans)

A.10

B.1,10

C.11

D.1,11

答案解析:10!,数据范围1—10,包含10,range是左闭右开的,所以取(1,11)。

3.下列程序为求1—>100所有偶数之和,则在①处应填入?(C )(2分)

ans=0

for i in range(①):

    ans+=i

print(ans)

A.1,100,2

B.1,101,2

C.2,101,2

D.2,100,2

答案解析:根据题意,起始值为2,终止值包含100,步长为2,所以为(2,101,2)。

4.下列程序为降序输出1—>100所有偶数,则在①处应填入?( B)(2分)

for i in range(①):

    print(i)

A.101,2,-2

B.100,1,-2

C.2,101,-2

D.2,100,-2

答案解析:根据题意,降序输出,起始值为100,终止值取到2即可,所以为(100,1,-2)。

5.下列程序为倒序输出列表的元素,则在①处应填入?(A )(2分)

lst=[1,4,5,7,9]

for i in range(①):

    print(lst[i])

A.len(lst)-1, -1, -1

B.len(lst)-1, 0, -1

C.len(lst), -1, -1

D.len(lst)-1, -1

答案解析:列表最大下标为len(lst)-1,起始下标为0,根据左闭右开原则,终止值为-1。

6.Python中字符串可以使用反斜线进行转义,实现某些难以用字符表示的效果。下列可以实现换行效果的转义字符是?(B )(2分)

A.\b

B.\n

C.\t

D.\r

7.下列可以正确输出

池塘里”快乐的歌唱家”

字符的Python语句是?( D)(2分)

A.print("池塘里\"快乐的歌唱家")

B.print("池塘里\"快乐的歌唱家\")

C.print('池塘里'\"快乐的歌唱家\")

D.print('池塘里\"快乐的歌唱家\"')

8.现有字符串S="Wherethere'sawillthere'saway.",现在需要计算并输出字符串中'e'在S出现的次数,正确的语句是?( C)(2分)

A.print(S.find('e',1))

B.print(S.index('e'))

C.print(S.count('e'))

D.print(S.index('e',0,len(S)))

9.下列哪个选项是Pythonmath库的数字常数?(C )(2分)

A.math.sin

B.math.sqrt

C.math.e

D.math.pow

10.下列可以输出当前时刻时间的正确的语句是?(A)(2分)

A.print(time.ctime())

B.print(time.strptime())

C.print(time.nowtime())

D.print(time.local())

11.Python中可以实现随机生成1-20之间int类型整数的语句是?(B)(2分)

A.print(random.int(1,20))

B.print(random.randint(1,20))

C.print(random.sample(1,20))

D.print(random.shuffle(1,20))

12.Python中词云主要是对文本数据中出现频率较高的“关键词”通过不同颜色、大小的渲染,在视觉上突出表现。常用的主要有WordCloud库,下列是WordCloud常用参数的是?( A)(2分)

A.width,height,background_color,max_words,mask

B.width,height,bold,memset,jieba,max_words

C.background_color,jieba,time,random,mask,max_words

D.max_words,mask,width,height,jieba,text_color

13.元组变量name=("张三","李四","小明","小红"),则name[::-1]的运行结果是?(A)(2分)

A.('小红','小明','李四','张三')

B.['小红','小明','李四','张三']

C.('小红')

D.运行出错

答案解析:本题主要考察Python列表中双冒号的使用。list[start:end:step],start表示起始位置,end表示结束位置,step表示步长。-1表示从右侧开始取步长,因此A选项正确。

14.已知一个元组t=('x','y',['X','Y'])。执行如下代码后,输出的结果是?(B )(2分)

t[2][0]='xx'

t[2][1]='yy'

print(t)

A.元组t不发生变化,仍为('x','y',['X','Y'])。

B.结果为:('x','y',['xx','yy'])

C.结果为:('x','y','xx','yy')

D.运行时错误

答案解析:本题主要考察学生对元组内元素不变性的理解。表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。

15.运行下列语句,输出的结果是?( B)(2分)

nums=[i * i for i in range(1, 10) if i % 3 == 0]

print(nums)

A.[1,4,9,16,25,36,49,64,81]

B.[9,36,81]

C.[3,6,9]

D.[4,16,36,64]

16.运行下列程序,以下选项正确的是?(D )(2分)

def k(num):

    if num==1:

       return False

    for i in range(2,num):

       if(num%i)==0:

           return False

    else:

       return True

nums=[i for i in range(1,100) if k(i)]

print(nums)

A.输出结果为1到99(包括99)所有整数组成的列表。

B.输出结果为1到98(包括98)所有偶数数组成的列表。

C.输出结果为1到99(包括99)所有奇数组成的列表。

D.输出结果为1到97(包括97)所有质数(素数)组成的列表。

答案解析:本题主要考察使用函数作为推导式的条件。把推导的条件放在函数中,既可以应对复杂的条件,又可以利用推导式的简洁写法。

17.运行下列语句,输出的结果是?(C )(2分)

>>>x=["A","B","C"]

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

>>>{i:jfori,jinzip(x,y)}

A.{['A','a'],['B','b'],['C','c']}

B.{'a','b','c'}

C.{'A':'a','B':'b','C':'c'}

D.{'A','B','C'}

18.运行下列程序,输出的结果是?( B)(2分)

letter=list({'a':1,'b':2,'c':3,'d':4})

print(letter)

A.[1,2,3,4]

B.['a','b','c','d']

C.['a',1,'b',2,'c',3,'d',4]

D.['a':1,'b':2,'c':3,'d':4]

19.有如下Python程序段:

L=[5,8,7,2,6,4,1,8]

p=0

for i in range(1,len(L)):

    if L[i] < L[p]:

       p=i

则程序执行后,p的值是?(D )(2分)

A.3

B.4

C.5

D.6

20.运行下列程序,输出的结果是?(C )(2分)

c=[5,3,5,8,2,7,6]

c.pop(5)

c.remove(5)

print(c)

A.[3,8,2,7,6]

B.[5,3,8,7,6]

C.[3,5,8,2,6]

D.[5,3,8,2,6]

答案解析:本题主要考核对列表函数pop(),remove()的应用和区别

21.运行下列程序,输出的结果是?( C)(2分)

x=['bike','car','bus','train']

print(list(map(len,x)))

A.[0,1,2,3]

B.[1,2,3,4]

C.[4,3,3,5]

D.[4,3,3,4]

答案解析:本题主要考核map()函数对列表的操作,将函数映射到列表上的每个元素

22.运行下列程序,输出的结果是?(B )(2分)

>>>a={1,2,3,4,5,6}

>>>b={4,5,6,7,8,9}

>>>print(a&b)

A.{1,2,3}

B.{4,5,6}

C.{7,8,9}

D.{1,2,3,4,5,6,7,8,9}

23.运行下列程序,输出的结果是?( A)(2分)

>>>fruit={'apple','orange','pear'}

>>>fruit.update("pear")

>>>print(fruit)

A.{'e','r','p','a','apple','orange','pear'}

B.{'pear','orange','apple'}

C.{'pear','orange','apple','pear'}

D.{'orange','apple'}

答案解析:本题主要考核集合的update()函数功能:合并另外一个集合中的元素到当前集合中。注意参数为字符串时,会将字符串中每个元素作为集合元素放到集合中。

24.运行下列程序,输出的结果是?(A )(2分)

scores={"语文":89,"数学":92}

scores["数学"]=90

scores[100]="技术"

print(scores)

A.{'语文':89,'数学':90,100:'技术'}

B.{'语文':89,'数学':90,'技术':100}

C.{'语文':89,'数学':92,'技术':100}

D.'语文':89,'数学':90,100:'技术'

25.编写Python程序实现:输入任意一个数字,输出所需火柴棍的数量。划线处应填入的代码是?(C )(2分)

num=input()

code={0:6,1:2,2:5,3:5,4:4,5:5,6:6,7:3,8:7,9:6}

count=________

print("共需火柴棍:",count)

A.int(num)

B.code(int(num))

C.code[int(num)]

D.code[num]

二、判断题(共10题,共20分)

26.range(start,stop,step)函数返回一个对象,该对象产生一个整数序列,开始与结束位置所组成的区间[start,stop],是左闭右闭的,start默认是0,step默认是1。(错 )

答案解析:range()返回的序列是左闭右开区间,即:包含左边不包含右边。

27.Python中对字符串进行修改时只需使用原有的内存空间,其内存地址不会发生变化。(错 )

28.在Python中设定字符串str="HelloPython",则str.find(‘w’)返回值为0。( 错)

29.Python默认安装包含PyInstaller内置模块,可以直接运行。(错 )

30.从存储内容上看,元组可以存储整数、实数、字符串、列表、元组等任何类型的数据,并且在同一个元组中,元素的类型是相同的。(错 )

答案解析:元组可以存储整数、实数、字符串、列表、元组等任何类型的数据,并且在同一个元组中,元素的类型可以不同。

31.对于数字n,如果表达式0 in [ n%d for d in range(2,n)]的值为False,则说明n是素数。(对 )

32.

>>>sub=['语文','数学','英语','科学','思品','体育']

>>>score=[105,97,156,105,72]

>>>list(zip(sub,score))

结果是:[('语文',105),('数学',97),('英语',156),('科学',105),('思品',72)]。( 对)

答案解析:本题主要考核zip()函数对列表的操作使用,zip()函数用于将多个列表中元素重新组合为元组,列表不等长,以短为准。

33.集合是一个无序的不重复元素序列,用{}作为界定符,如集合{1,2,[3,4],"ab"}。(错 )

34.用set("12323")和{str(i) for i in range(1,4)}可以创建相同的集合。(对 )

答案解析:本题主要考核集合元素之间不允许重复,所以二个集合相同,

都为{'1','2','3'}。

35.在Python中,字典是一个无序、可变和有索引的键、值对的集合,每一对键、值对之间用分号“;”间隔。(错 )

三、编程题(共3题,共30分)

36.明明得到一个数值列表,想知道列表中只出现过一次的元素。请你帮忙编写程序输出这些元素。注意元素必须按照它们在数字列表中初始顺序输出。输入格式:输入共1行,若干个数值之间以空格隔开。输出格式:输出共1行,若干个数值之间以空格隔开。

输入样例:19 73 258 6 73 234

输出样例:19 258 6 234

a=[int(i)for i in input().split()]

n=len( ① )

for i in range( ② ):

    f=0

    for j in range(n):

       if(a[i]== ③ and i!=j):

           f=1

           break;

    if(f==0):

       print( ④ ,end='')

参考程序:

a=[int(i)for i in input().split()]

n=len(a)

for i in range(n):

    f=0

    for j in range(n):

       if(a[i]== a[j] and i!=j):

           f=1

           break;

    if(f==0):

       print( a[i] ,end='')

评分标准:

(1)a或等效答案;(3分)

(2)n或等效答案;(2分)

(3)a[j]或等效答案;(2分)

(4)a[i]或等效答案。(3分)

37.数字序列交集

已知两个整数序列num1和num2,求解两个整数序列的交集。输出结果中的每个元素一

定是唯一的。我们可以不考虑输出结果的顺序。例如,nums1=[4,9,5],nums2=

[9,4,9,8,4]。输出结果可以为[9,4]或[4,9]。

请将程序代码补全:

def aa(nums1=[],nums2=[]):

    set1=①

    set2=②

    if len(set1)>len(set2):

           ③

return[x for x in set1 if x in ④]



nums1=[4,9,5]

nums2=[9,4,9,8,4]

print(aa(nums1,nums2))

参考程序:

def aa(nums1=[],nums2=[]):

    set1=set(nums1)

    set2=set(nums2)

    if len(set1)>len(set2):

       set1,set2=set2,set1

return[xforxinset1ifxinset2]



nums1=[4,9,5]

nums2=[9,4,9,8,4]

print(aa(nums1,nums2))

评分标准:

(1)set(nums1);(2分)

(2)set(nums2);(2分)

(3)set1,set2=set2,set1;(4分)

(4)set2。(2分)

38.“石头剪刀布”游戏是猜拳的一种,两人玩,起源于中国,游戏规则中,石头克剪刀,

剪刀克布,布克石头。小明编写了Python程序代码,决定与电脑大战“石头剪刀布”。

输入格式:

    共1行,一个数表示用户出拳的类型(石头1、剪刀2、布3)。

输出格式:

    共1行,输出电脑的出拳类型与游戏结果。

输入样例:

    2

输出样例:

    电脑出的是布,这局恭喜用户胜出!


import random

win = [('石头','剪刀'),①,('布','石头',)]

cq = {1:'石头',2:'剪刀',3:'布'}

while True:

user = int(input('请出拳:1.石头2.剪刀3.布\n'))

if user not in range(②):

    print("输入有误,请重新输入……")

    continue

    computer =random.randint(1,3)

    if user == computer:

       print("电脑出的是%s,这局是平局!"%cq[computer])

       break

    elif(③,cq[computer]) in win:

       print("电脑出的是%s,这局恭喜用户胜出!"%cq[computer])

       break

    else:

       print("电脑出的是%s,这局恭喜电脑胜出!"%cq[computer])

       break

参考程序:

import random

win = [('石头','剪刀'),('剪刀','布'),('布','石头',)]

cq = {1:'石头',2:'剪刀',3:'布'}

while True:

user = int(input('请出拳:1.石头2.剪刀3.布\n'))

if user not in range(1, 4):

    print("输入有误,请重新输入……")

    continue

    computer =random.randint(1,3)

    if user == computer:

       print("电脑出的是%s,这局是平局!"%cq[computer])

       break

    elif(cq[user],cq[computer]) in win:

       print("电脑出的是%s,这局恭喜用户胜出!"%cq[computer])

       break

    else:

       print("电脑出的是%s,这局恭喜电脑胜出!"%cq[computer])

       break

答案解析:

评分标准:

(1)('剪刀','布')或等效答案;(3分)

(2)1,4或等效答案;(3分)

(3)cq[user]或等效答案。(4分)

你可能感兴趣的:(电子学会Python真题,算法,青少年编程,python)