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

2023-05 Python五级真题

分数:100

题数:38

测试时长:60min

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

1.  有列表L=['UK','china','lili',"张三"],print(L[-2])的结果是?( C)

A.  UK

B.  'lili','张三'

C.  lili

D.  'UK','china','lili'

答案解析:列表元素定位

扫描二维码关注公众号,回复: 16715082 查看本文章

2.  倒计时在日常生活中有广泛的应用。Python使用range可以实现倒序数。下面可以正确倒序输出15以内正整数的语句是?(D )

A.  print(list(range(15, -1, 1)))

B.  print(list(range(-1, 15, 1)))

C.  print(list(range(15, 1, -1)))

D.  print(list(range(15, 0, -1)))

答案解析:range(start, stop[, step])的高阶应用

3.  已知一个字符串s="iloveyou"。通过操作该字符串构造一个新的列表li=['i', 'oveyou']。以下哪个选项不能构造新列表li?(A )

A.  li = s.split("l",0)

B.  li = s.split("l",1)

C.  li = s.split("l",2)

D.  li = s.split("l",3)

答案解析:本题主要考察split()函数的用法。拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)。 其语法规则为:str.split(str="",num=string.count(str)) str:表示为分隔符,默认为空格,但是不能为空('')。若字符串中没有分隔符,则把整个字符串作为列表的一个元素 num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量

4.  有如下程序,请问此程序的执行结果是?(D) 

tup1 = (12,'bc',34,'cd')

tup1[1] = 23

print(tup1[3])

A.  cd

B.  12

C.  34

D.  程序出现错误

答案解析:元组的元素不可修改。

5.  有如下python程序段,下列说法错误的是?(D )

s={1,2,3,4,5}

print(s)

s.clear() 

print(s)

A.  “{1,2}+{5,6}”是错误的语句

B.  s数据类型是集合

C.  此程序段的作用是输出原始集合s和移除数据之后的集合s

D.  s数据类型是字典

答案解析:集合的创建与相关操作。

6.  现有校园图书馆最近一周(周一至周日)借书信息采集数据列表: borrow = [502, 387, 612, 545, 702, 855, 962] ,当前需要打印输出周一至周五的数据信息,正确的操作是?(C )

A.  print(borrow[1:n-2])

B.  print(borrow[0:n-1])

C.  print(borrow[:-2])

D.  print(borrow[::-2])

答案解析:列表的切片操作,本题正确操作为print(borrow[:-2])。

7.  科技小组实践作品用到的传感器列表 sensor = ['shengyin', 'chaoshengbo', 'guangmin', 'huidu'] , 当前需要增加列表元素'hongwai',正确的操作是?( B)

A.  sensor.insert('hongwai')

B.  sensor.append('hongwai')

C.  inset sensor['hongwai']

D.  append sensor['hongwai']

答案解析:Python append()函数用于在列表末尾添加新的对象。

8.  Python中字符串可以使用反斜线进行转义,实现某些难以用字符表示的效果。 下面可以实现水平制表(跳到下一个TAB位置)的转义字符是?( C)

A.  \b

B.  \n

C.  \t

D.  \r

答案解析:字符串的转义,\t可以实现水平制表(跳到下一个TAB位置)。

9.  现有字符串S = "No mountain is more high than one." ,现在需要计算并输出字符串中'o'在S出现的次数,正确的语句是?(D )

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

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

C.  print(S.index('o',0,len(S)))

D.  print(S.count('o'))

答案解析:count函数用于统计字符串的某个字符出现的次数。

10. 下列程序的功能是?(B  )

shu=10000

result=[a for a in range(1,shu+1) if shu%a==0]

print(result)

A.  计算并输出10000以内的质数

B.  计算并输出10000的约数

C.  计算并输出10000的倍数

D.  计算并输出1-10000以内的整10数

答案解析:列表推导式的语法格式如下: [表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]

11. 运行下列程序: list(range(2,9,2)) 输出的结果是?( B)

A.  2, 4, 6, 8

B.  [2, 4, 6, 8]

C.  [1, 3, 5, 7, 9]

D.  1, 3, 5, 7, 9

答案解析:将range()产生的数字2,4,6,8转换为列表。

12. 下列books是一个字典,有一个for循环如下:

    for  info1,info2 in books.items( ):

       print(info2)

上述info2可以得到什么?(B )

A.  键

B.  值

C.  键-值

D.  字典

答案解析:字典键/值的简单应用,可以得到字典的值。

13. 集合A是曾经到云南旅游的人,集合B是曾经到海南旅游的人,如果现在想要得到曾经到海南但是不曾到过云南旅游的人,可以使用那一种集合功能?( D)

A.  A & B

B.  A | B

C.  A - B

D.  B - A

答案解析:集合的差集运算,返回一个新集合,包括在集合B中但不在集合A中的元素。

14. 求1-100之内能被7整除,但是不能被3整除的所有数,正确的列表推导式是?(D )

A.  print([for x in range(0, 100) if x % 7 == 0 and x % 3 != 0])

B.  print([for x in range(1, 101) if x % 7 == 0 and x % 3 != 0])

C.  print([x for x in range(0, 100) if x % 3 == 0 and x % 7 != 0])

D.  print([x for x in range(1, 101) if x % 7 == 0 and x % 3 != 0])

答案解析:列表推导式的语法格式如下: [表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]

15. 利用time模块,下列可以输出当前日期的正确的语句是?(B )

A.  print(time.ctime('%y%m%d'))

B.  print(time.strftime('%y%m%d'))

C.  print(time.nowdate('%y%m%d'))

D.  print(time.local('%y%m%d'))

答案解析:Python time strftime() 函数用于格式化时间,返回以可读字符串表示的当地时间,%y 两位数的年份表示(00-99)%m 月份(01-12)%d 月内中的一天(0-31)。

16. Python中可以实现随机生成1-100之间浮点数的语句是?(A )

A.  print(random.uniform(1,100))

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

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

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

答案解析:Python random.uniform(a, b),用于生成一个指定范围内的随机浮点数,两个参数其中一个是上限,一个是下限。

17. 已知有列表lst = [2,3,4,5,6],下面操作可以求出最小值的是?(B )

A.  sum(lst)

B.  min(lst)

C.  max(lst)

D.  MIN(lst)

18. 已知有元组tup1=('a','b'),tup2=(1,2,3),tup3=('china','UK'),执行print(tup1+tup2+tup3)后输出是?( C)

A.  ['a', 'b', 1, 2, 3, 'china', 'UK']

B.  (('a','b'),(1,2,3),('china','UK'))

C.  ('a', 'b', 1, 2, 3, 'china', 'UK')

D.  'a', 'b', 1, 2, 3, 'china', 'UK'

19. str1="你是大英雄",执行下列哪个选项可以输出"雄英大是你"?(B )

A.  print((str1(0,0))

B.  print(str1[::-1])

C.  print(str1[0])

D.  print(str1[0:5])

20. Python中,range函数表示产生一个序列,range(6)则表示产生的一个序列是?(B )

A.  0-6

B.  0-5

C.  1-6

D.  1-5

21. 下列代码运行后的结果是?(D )

dp={}

dp["2^10"]=1024

print(dp)

A.  ['2^10': 1024]

B.  {"2^10"}

C.  1024

D.  {'2^10': 1024}

22. 运行下面代码后得到相应的输出结果,请问是用了哪一种推导公式?(C )

a = [i for i in range(10) if i % 3 ==0]

print(a)

#output: [0, 3, 6, 9]

A.  集合推导公式

B.  字符串推导公式

C.  列表推导公式

D.  元组推导公式

23. 请问以下Python代码输出的结果是?(B)

a = {i**2 for i in (6,7,8) if i>3}

print(a)

A.  (36,49,64)

B.  {64, 49, 36}

C.  {64,49}

D.  {2,36,64}

答案解析:集合推导式格式为:{expr for value in collection}或: {expr for value in collection if condition}

24. 下面代码运行后的结果是?(C )

import jieba

str ="大家好,我叫龙云!请多多关照!"

jieba.suggest_freq(("龙云"),True)

print(jieba.lcut(str))

A.  '大'',''家', '好', ',', '我', '叫', '龙'',''云', '!', '请', '多多','关照', '!'

B.  ['大家', '好', ',', '我', '叫', '龙'',''云', '!', '请', '多多关照', '!']

C.  ['大家', '好', ',', '我', '叫', '龙云', '!', '请', '多多关照', '!']

D.  ('大家', '好', ',', '我', '叫', '龙云', '!', '请', '多多关照', '!')

答案解析:python中的jieba库应用。 有些句子中出现了一些词语,但是被分开为两个单独的字,虽然这样可以调整词库,只需要重新加载自定义的词库即可,除此之外我们还可以用调整词频来解决这个问题,本题把“龙云”这个姓名强制为词语而不是分割为两个单独的字。 jieba.suggest_freq(("龙云"),True)是全模式语法。

25. 下列代码运行后的结果是?( D)

import math

a=math.floor(10.2)

print(a)

A.  10.20

B.  10.0

C.  11

D.  10

答案解析:python中math库应用。 math.floor是向下取整函数

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

26. 在Python语言中,字符串是属于有序序列。( 对)

答案解析:题干描述正确。Python列表、元组、字符串都属于有序序列。

27. 无法通过引用索引来访问集合中的元素,但是可以用for循环来遍历集合中的元素。(错 )

28. multiples = [i for i in range(30) if i % 3 == 0] ,此推导式中,multiples中共有10个元素。( 对)

29. 新学期,书法社团增加了新学员,目前一共n人,小刚作为社团的信息员,用Python建立了一个列表,列表索引从1开始,到n结束。( 错)

答案解析:Python建立一个列表,列表索引从0开始,到n-1结束。

30. Python中元组的元素不可以原位改变。( 对)

31. Python中可以通过 .replace() 删除字符串开头和结尾的空格。(错 )

答案解析:Python中可以通过.replace(old,new[,max])把字符串中的old字符串换成new字符串, 如果指定第三个参数max,则替换不超过 max 次。

32. enumerate()函数是Python的内置函数,它能用来遍历一个可迭代对象,它在遍历的同时还可以得到当前元素的索引位置。(对 )

33. Python中字典(dict)的“值”可以是列表(list)、字典(dict)、集合(set)类型。(对 )

答案解析:Python字典的键可以是整数、字符串或者元组,只要符合唯一和不可变的特性就行;字典的值可以是 Python 支持的任意数据类型。

34. 乐器社团活动,小明用Python写了一个汇总程序,在他的程序中乐器集合的元素是可以相同的。( 错)

答案解析:Python中集合元素不可以相同。

35. PyInstaller命令执行完,源文件所在的目录将生成dist和build两个文件夹。 (对 )

答案解析:build文件夹主要用于PyInstaller存储临时文件,打包程序存放于dist文件夹。

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

36. 已知 IPv6 的地址字符串的格式为 X:X:X:X:X:X:X:X,其中每个 X 表示长度为 4 的字符串。例如:某 IPv6 字符串为“2A08:CCD6:0088:108A:0011:0002:202F:AA05”,IPv6 表示法需将每个 X 的前导零都省略,程序输出结果如下图所示:

 

现设计程序自动删除 IPv6 地址的前导零,请在划线处填入合适的代码。

s="2A08:CCD6:0088:108A:0011:0002:202F:AA05"

        ①       

flag=False

for i in range(len(s)):

    if s[i]==":":

                ②       

        flag=False

    elif         ③        :

        ans+=s[i]

        flag=True

print("原 IPv6 地址为:",s)

print("去前导零后:",ans)

参考程序:

s="2A08:CCD6:0088:108A:0011:0002:202F:AA05"

ans=""  

flag=False

for i in range(len(s)):

    if s[i]==":":

        ans+=s[i]

        flag=False

    elif s[i]!="0" or flag==True:

        ans+=s[i]

        flag=True

print("原 IPv6 地址为:",s)

print("去前导零后:",ans)

   

评分标准:

(1)ans="" ;(3分)

(2)ans+=s[i];(3分)

(3)s[i]!="0" or flag==True。(4分)

37. 编写程序,实现分段函数的计算,分段函数的取值如下表所示。要求:可连续输入5次(也就是输入5个x值,求出对应的y值),根据对应的表达式求出y值之后,将结果转化成整数添加到列表a中。请判断存在于列表a中的5个元素是否为素数,如果为非素数则转化成元组之后存在b1中,如果是素数则转换成元组之后存放在b2中,分别输出b1、b2中非素数和素数的元素及元素个数。

 

a=[]
a1=[]#暂时存储非素数的值
a2=[]#暂时存储素数的值
b1=()
b2=()
for i in range(5):
    x=int(input("输入x="))
    if x<0:
        y=0
    elif 0<=x<5:
        y=x
    elif 5<=x<10:
        y=3*x-5
    elif 10<=x<20:
        y=0.5*x-2
    elif x>=20:
        y=2*x
            ①        
for  i  in  a:   
    if         ②        :
       a1.append(i)
    else:
        flag=True
        for j in range(2,i):
            if  i%j==0:
                        ③         
                break
        if         ④        :
            a2.append(i)
        else:
            a1.append(i)
b1=tuple(a1)
b2=tuple(a2)                
print("非素数的个数有"+str(len(b1))+"个,","非素数为:",b1)
print("素数的个数有"+str(len(b2))+"个,","素数为:",b2)

参考程序:

a=[]
a1=[]#暂时存储非素数的值
a2=[]#暂时存储素数的值
b1=()
b2=()
for i in range(5):
    x=int(input("输入x="))
    if x<0:
        y=0
    elif 0<=x<5:
        y=x
    elif 5<=x<10:
        y=3*x-5
    elif 10<=x<20:
        y=0.5*x-2
    elif x>=20:
        y=2*x
    a.append(int(y))   
for  i  in  a:   
    if  i==0 or i==1:
       a1.append(i)
    else:
        flag=True
        for j in range(2,i):
            if  i%j==0:
                flag=False  
                break
        if flag==True:
            a2.append(i)
        else:
            a1.append(i)
b1=tuple(a1)
b2=tuple(a2)                
print("非素数的个数有"+str(len(b1))+"个,","非素数为:",b1)
print("素数的个数有"+str(len(b2))+"个,","素数为:",b2)

评分标准:

(1)a.append(int(y));(2分)

(2)i==0 or i==1;(2分)

(3)flag=False;(3分)

(4)flag==True。(3分)

    展示地址:点击浏览

38. 给定一个完全由数字字符('0','1','2',...,'9')构成的字符串str,请写出str的p型编码串。例如:字符串1335554668可被描述为“1个1、2个3、3个5、1个4、2个6、1个8”,因此我们说1335554668的p型编码串为112335142618;00000000000可描述为“11个0”,因此它的p型编码串为110;类似的道理,编码串101可以用来描述1111111111;110003444225可描述为“2个1、3个0、1个3、3个4、2个2、1个5”,因此它的p型编码串为213013342215。如果输入非数字字符,则提示输入无效。

根据上述算法思想,补全下列代码。

s=input("请输入字符串str:")
s+=' '
lens=len(s)
for i in range(0,        ①        ,1):
    if '0'<=s[i]<='9':
                ②        
    else:
        print('输入无效!')
        exit()
sum=1
i=0
while i<lens-1:
    if          ③        :
        sum+=1
    else:
        print(sum,end='')
        print(s[i],end='')
                ④        
    i+=1

参考程序:

s=input("请输入字符串str:")
s+=' '
lens=len(s)
for i in range(0,lens-1,1):
    if '0'<=s[i]<='9':
        continue
    else:
        print('输入无效!')
        exit()
sum=1
i=0
while i<lens-1:
    if s[i]==s[i+1]:
        sum+=1
    else:
        print(sum,end='')
        print(s[i],end='')
        sum=1
    i+=1

评分标准:

(1)lens-1 或等效答案;(2分)

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

(3)s[i]==s[i+1] 或者s[i+1]==s[i] 或等效答案;(3分)

(4)sum=1 或等效答案。(3分)

猜你喜欢

转载自blog.csdn.net/m0_46227121/article/details/131225782
今日推荐