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

2022-09 Python五级真题

分数:100

题数:38

测试时长:60min

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

1. 已知字符串:s="语文,数学,英语",执行print(s.split(","))语句后结果是?(A)(2分)

A. ['语文', '数学', '英语']

B. [语文, 数学, 英语]

C. ['语文, 数学, 英语']

D. ['语文 数学 英语']

2. 能输出下面字符串的是?(A)(2分)

what's this?

it's an "apple"

A. print("what\'s this?\nit\'s an \"apple\"")

B. print("what's this? it's an \"apple\"")

C. print('what's this?\nit's an "apple"')

D. print("what\'s this?\nit\'s an "apple\"")

3. 下面语句不能输出"我是小星,今年5岁。"的是?(C)(2分)

A. print("我是{},今年{}岁。".format("小星",5))

B. print("我是{name},今年{age}岁。".format(age=5,name="小星"))

C. print("我是%s,今年%s岁。"%(5,"小星"))

D. print("我是%s,今年%d岁。"%("小星",5))

4. 已知字符串:s="python学习手册.txt",下面语句不能输出"python学习手册"的是?(D)(2分)

A. print(s[0:s.find(".txt")])

B. print(s[0:-4])

C. print(s.replace(".txt",""))

D. print(s.split("."))

5. 以下程序的功能是?(C)(2分)

import random

a=""

for i in range(4):

    c=random.randint(0,9)

    if random.randint(0,1):

        d=random.randint(97,122)

    else:

        d=random.randint(65,90)

    a=a+str(c)+chr(d)

print(a)

A. 输出4C2f2D8g

B. 生成大小写字母的混合密码

C. 生成8位随机的密码,包含字母和数字

D. 生成8位随机数字的混合密码

6. 使用turtle.fd()函数和turtle.left()函数绘制一个边长为200像素的正方形及一个外接圆,如图所示,应在横线处补充哪一个选项,不得修改其他代码?(A)(2分)

import turtle

turtle.pensize(2)

turtle.color('#FF8EFF','#2F0000')

for i in range(4):

    turtle.fd(200)

    turtle.left(90)

turtle.left(-45)

turtle.circle(         *pow(2,0.5))

A. 100

B. 50

C. 200

D. -100

7. 以下有关常用标准库的表述中,正确的是?(C)(2分)

A. jieba.cut(s)函数分词功能是自由模式分词

B. wordcloud库生成词云有两种方法:文本生成和图片生成

C. time的strftime()函数用于格式化时间,返回以可读字符串表示的当前时间

D. "%y-%m-%d, %H:%M:%S"和"%Y-%m-%d, %H:%M:%S"输出格式一样

8. 我们可以对文本中词频较高的分词,通过词云图给予视觉上的突出,小明打算用Python程序来生成词云图,程序中需要用到以下哪个第三方库?(A)(2分)

A. wordcloud

B. math

C. random

D. turtle

9. 下列关于Python元组(tuple)的表述正确的是?(B)(2分)

A. 元组只能存储同一类型数据,其内元素可以改变。

B. 元组可以存储任意类型数据,属于不可变序列。

C. 元组可以存储任意类型数据,其内元素可以改变。

D. 元组只能存储同一类型数据,其内元素固定不变。

10. 要确定元组有多少项,可以使用下列方法?(D)(2分)

A. length()

B. count()

C. size()

D. len()

11. 求1-100之内能被4整除,但是不能被5整除的所有数,正确的列表推导式是?(D)(2分)

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

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

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

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

12. 计算1-100之间的完全平方数,正确的生成器推导式是?(C)(2分)

A. square = (x**2 for x in range(10))

B. square = (x**2 for x in range(11))

C. square = (x**2 for x in range(1,11))

D. square = [x**2 for x in range(1,10)]

13. 关于Python序列解包,下列表述错误的是?(C)(2分)

A. 解压缩就是将数据字符等从列表等装有元素的容器取出需要的元素。

B. 解压缩就是将数据字符等从字典等装有元素的容器取出需要的元素。

C. 解压缩就是将数据字符等从函数等装有元素的容器取出需要的元素。

D. 解压缩就是将数据字符等从字符串等装有元素的容器取出需要的元素。

14. 下面代码运行后结果是?(C)(2分)

ls=[[22,2,33],[[44,25],46],[73,28],[23,45,34]]

print(len(ls))

A. 11

B. 3

C. 4

D. 1

15. 小明将社会主义核心价值观存放在一个列表lis当中,lis=["富强","民主","文明","和谐","自由","平等","公正","法治","爱国","敬业","诚信","友善"]。请问以下哪一个选项能够正确显示出“爱国”这个词组?(C)(2分)

A. lis[9]

B. lis[-5]

C. lis[2:10][-2]

D. lis[:-2][-3]

16. 已知一个列表lis = [5, 8, 'x', ['yy', 202, ['k3', ['aa', 2, '5']], 78], 'ca', 'sdv']。下列选项不能把列表lis中’aa’字符串变为大写‘AA’字符串的是?(D)(2分)

A. lis[3][2][1][:1] = ['AA']

B. lis[3][2][1][0] = lis[3][2][1][0].upper()

C. lis[-3][-2][-1][0] = "AA"

D. lis[-3][-2][-1][0].upper()

17. 下面代码运行后输出的结果是?(D)(2分)

s =["我","爱","你","中","国"]

print(s[1:5:3])

A. ['爱','你', '国']

B. ['爱','你' ,'中', '国']

C. ['爱']

D. ['爱','国']

18. 下列语句在运行时会出现错误的是?(C)(2分)

A. s = {1,2,'three', 'four', (10, 11)}

B. s = {1,2,3,3,4}

C. s = {1,2,['three', 'four' ],(10, 11)}

D. s= set([1,2,3,4])

19. 运行下面代码,程序输出正确的一项是?(D)(2分)

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

s.update({s.add(9),3,7,2,s.remove(5)})

print(s)

A. {1,2,3,4,5,9}

B. {1,2,3,4,,7,9}

C. {1,9,3,7,,2}

D. {1,2,3,4,7,9,None}

20. 有如下Python程序段:

stu=dict(name="张明明",age=10)

stu['sex']="男"

for i in stu.values():

print(i,end=" ")

执行程序后,输出的结果为?(B)(2分)

A. name age sex

B. 张明明 10 男

C. name age

D. 张明明 10

21. 已知字典health={'姓名':['小明','小红','小张','小芳'],'身高':[153,145,150,148],'体重':[55,38,43,40]}中存储了某班学生体质健康数据,想要计算小红的身体质量指数BMI=体重/身高的平方,下列能正确访问到小红身高和体重值的表达式是?(C)(2分)

A. health[1][1] health[2][1]

B. health[2][2] health[3][2]

C. health['身高'][1] health['体重'][1]

D. health['身高'][2] health['体重'][2]

22. 在Python中,range(1,6)表示的范围是?(C)(2分)

A. 1,2,3,4,5,6

B. 0,1,2,3,4,5

C. 1,2,3,4,5

D. 0,1,2,3,4

23. 在 Python 中,运行以下程序输出结果为?(C)(2分)

for i in range(3):

    print(i,end=" ")

A. 0,1,2

B. 1 2

C. 0 1 2

D. 3

24. 输出“12 9 6 3 ”,下列程序不正确的是?(B)(2分)

A.

for  i in range(12,0,-3):

    print(i,end=" ")

B.

for  i in range(12,3,-3):

    print(i,end=" ")

C.

for  i in range(4,0,-1):

    print(3*i,end=" ")

D.

for  i in range(5,1,-1):

    print(3*(i-1),end=" ")

25. 有如下Python程序段:

cnt=0

for i in range(0,10):

    for j in range(0,10):

        if i+j==10:

            cnt+=1

print(cnt)

运行该程序后cnt的值为?(A)(2分)

A. 9

B. 10

C. 11

D. 12

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

26. Python运算符%不仅可以用来求两个整数相除的余数,还可以用来格式化输出字符串。(对)

27. 如果直接在复杂的环境使用pyinstaller会使得打包出来的文件十分大。(对)

28. Python中的元组类似于列表, 创建一个元组可以将所有元素放在小括号()或方括号[]内。(错)

29. Python中如果x,y,z=map(str,range(3)),那么y=1。(错)

30. 通过 add 方法可以向列表添加元素。(错)

31. Python集合支持使用下标访问其中的元素。(错)

32. Python集合中可以删除指定位置的元素,也可以删除特定值的元素。(错)

33. 字典的键不允许重复,但值是可以重复的。(对)

34. range函数有2个参数时,第1个参数表示左边界,第2个参数表示右边界,且不含右边界。 (对)

35. 在python中要输出文件路径时,如:"c:\name\text\file.txt",可以使用双重转义(用两个斜杠)输出该字符串,s="c:\\name\\text\\file.txt",print(s)。(对)

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

36.小聪同学是班长,为了更好地管理班级通讯录,他编写了一个程序,具有以下功能:

  (1)设计有一个空字典,用于存放用户的通讯录(包括姓名和电话号码)。

  (2)程序运行后,有以下提示信息并可选择输入:

          a.新增联系人

          b.查询联系人

          c.删除联系人

          d.退出程序

  (3)根据用户选择,进入下一步。

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

dic_add={}

while True:

    print("-----班级通讯录管理-----")

    print("a、新增联系人\nb、查询联系人\nc、删除联系人\nd、退出程序")

    x=input("请输入您的选择:")

    if x=="a" :

        new_name=input("请输入联系人姓名:")

        new_number=input("请输入联系人电话:")

        dic_add[new_name]=  _____①_____

        print("\n" )

    elif x=="b":

        name=input("请输入联系人姓名:")

        if name in _____②______    :

            print("该联系人的电话号码为:{}".format(dic_add[name]))

        else:

            print("该联系人不存在!")

            print( "\n")

    elif x=="c":

        name=input("请输入联系人姓名:")

        if name in dic_add:

            ____③_____ 

            print("该联系人已从通讯录中删除!")

        else:

            print("该联系人不存在!")

            print("\n")

    elif    ______④______

        break

    else:

        print("输入错误!")

        print( "\n")

print( "-----程序已结束-----")

参考程序:

dic_add={}

while True:

    print("-----班级通讯录管理-----")

    print("a、新增联系人\nb、查询联系人\nc、删除联系人\nd、退出程序")

    x=input("请输入您的选择:")

    if x=="a" :

        new_name=input("请输入联系人姓名:")

        new_number=input("请输入联系人电话:")

        dic_add[new_name]=new_number

        print("\n" )

    elif x=="b":

        name=input("请输入联系人姓名:")

        if name in dic_add :

            print("该联系人的电话号码为:{}".format(dic_add[name]))

        else:

            print("该联系人不存在!")

            print( "\n")

    elif x=="c":

        name=input("请输入联系人姓名:")

        if name in dic_add:

            del dic_add[name]

            print("该联系人已从通讯录中删除!")

        else:

            print("该联系人不存在!")

            print("\n")

    elif x=="d":

        break

    else:

        print("输入错误!")

        print( "\n")

print( "-----程序已结束-----")

评分标准:

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

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

(3)del dic_add[name] 或等效答案;(3分)

(4)x=="d": 或等效答案.(2分)

37. 明明送给冬冬一张包含n行省份和城市对应信息的列表,同时还给冬冬一组m个需要查询的城市名称。请帮助冬冬编程计算,对于每个城市输出其所在省份。

输入格式:

第1行,1个整数n,表示共有n行省份和城市对应信息

第2..n+1行,每行若干个字符串,互相之间用空格隔开,其中第1个字符串表示省份名称,其它字符串表示城市名称

第n+2行,1个整数m,表示共有m个需要查询的城市

第n+3..n+m+2行,每行一个字符串,分别表示需要查询的城市

输出格式:

共m行,每行一个字符串,分别对应表示每个查询城市所在的省份。

输入样例:

3

Jiangsu Nanjing Suzhou Wuxi

Zhejiang Hangzhou Ningbo Wenzhou

Guangdong Gangzhou Shenzhen Foshan

2

Hangzhou

Shenzhen

输出样例:

Zhejiang

Guangdong

n=int(input())

d=  ______①______

for i in range(n):

     a=[j for j in input().split()]

     value=a[0]

     for j in range(1,len(a)):

         d[  ______②______   ]=value

m=int(input())

for i in range(m):

     x=input()

     print(   ______③_______     )

参考程序:

n=int(input())

d={}

for i in range(n):

    a=[j for j in input().split()]

    value=a[0]

    for j in range(1,len(a)):

        d[a[j]]=value

m=int(input())

for i in range(m):

    x=input()

    print(d[x])

评分标准:

(1){} ; (3分)

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

(3)d[x] 或等效答案。(4分)

38. 寻找2022

小明在玩一个数字游戏,该游戏要求每次随机生成100个0与2组成的数字序列。现在需要小明找出这个随机数字序列中能够连续组成2022这个数字序列的个数。请你编写Python程序帮助小明实现游戏功能。

请将如下程序代码补全:

import random as r

l=[]

count=0

for i in range(100):

    l.append(  _______①_______      )

print(l)

for i in range(100):

    for j in range(100):

        if  ______②_______ :

           if [2,0,2,2]== _____③_____  :

                   ______④______      

print(count)

参考程序:

import random as r

l=[]

count=0

for i in range(100):

    l.append(r.randint(0,1)*2)

print(l)

for i in range(100):

    for j in range(100):

        if j-i==3:

           if [2,0,2,2]==l[i:j+1]:

            count+=1

print(count)

评分标准:

(1)r.randint(0,1)*2 或等效答案; (3分)

(2)j-i==3  或等效答案;        (3分)

(3)l[i:j+1]  或等效答案;        (2分)

(4)count+=1  或等效答案。     (2分)

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