2022年06月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

2022年06月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试_第1张图片

Python等级考试(1~6级)全部真题・点这里

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

第1题

如下所示的2行代码,最后print()函数打印出来的结果是?( )

c = [['赵大',21,'男','北京'],['钱二',20,'男','西安'],['孙三',18,'女','南京'],['李四',20,'女','杭州']]
print(c[1][3])

A: 女
B: 北京
C: 西安
D: 男

答案:C

根据给定的代码,c 是一个包含四个子列表的列表。每个子列表都包含四个元素:姓名、年龄、性别和城市。

c[1][3] 表示访问列表 c 中索引为 1 的子列表的索引为 3 的元素。根据给定的列表 c,c[1] 是 [‘钱二’,20,‘男’,‘西安’],而 c[1][3] 是该子列表的索引为 3 的元素,即 ‘西安’。

第2题

要读取下图“书目.csv”文件的全部内容,小明编写了后面4行代码。请问,红色①处,应该填写哪种打开模式?( )

2022年06月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试_第2张图片

f = open("书目.csv" ,)
a = f.read()
print(a)
f.close

A: “w”
B: “a”
C: “r”
D: “a+”

答案:C

考查学生对open()函数参数的掌握。本题除了选项C,填写打开模式为只读r之外,参数W会清除文件内容,显然不对,参数a与a+,指针在末尾,读不出内容,也不对。

第3题

下图所示,有一个名为"书目.csv"的文件。小明针对这个文件编写了5行代码,
请问,代码运行到最后打印在屏幕上的结果是?( )

2022年06月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试_第3张图片

with open('书目.csv', 'r', encoding='utf-8') as f:
    for line in f.readlines():
        a = line.split(",")
        if a[0] == "水浒传" :
            print(a[1])

A: 老残游记
B: 172
C: 55
D: 70

答案:D

本题考查学生对列表切片中,每个数据位置的理解 。此题中的a[1],应该对应水浒传的价格,所以正确答案是70。

第4题

小明编写了下列4行代码,请问,代码运行到最后,屏幕上打印出来的结果是?( )

a = ['a','b','c']
b = [1,2,3]
c = [b,a]
print(c[1][0])

A: 1
B: a
C: ‘1’
D: ‘a’

答案:B

考查学生对嵌套列表中,元素位置的理解。同时考查学生对用已有列表创建新列表的理解。

第5题

下图左边的“身体素质.csv”文件,要打印成下图右边的效果,每个字段之间相隔一个TAB键的距离。小明编写了如下代码,请选择:代码中横线处的内容?( )

2022年06月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试_第4张图片

f = open('身体素质.csv', 'r')
a = []
for i in f:
    a.append(i.strip('\n').split(','))
f.close
for x in a:
    line=''
    for y in x:
        line += '{ }    '.format(y)
    print(line)

A: \t
B: \n
C: \a
D: \r

答案:A

\t插入一个TAB键的距离。

第6题

在Python异常处理结构中,如果程序执行没有遇到异常(错误),不会执行什么关键字后面的语句体?( )

A: try
B: except
C: else
D: finally

答案:B

在异常处理程序中,没有错误(异常),就跳过except语句体的执行。

第7题

运行下列程序,输出的结果是?( )

try:
    a=int(input())
    b=int(input())
    r=a/b
    print('商是:',r)
except:
    print('错误')
else:
    print('正确')
finally:
    print('结束')

当输入:
16
8

A: 错误
B:

商是: 2.0
正确
C:

商是: 2
正确
结束
D:

商是: 2.0
正确
结束

答案:C

辨析异常处理的执行程序过程:如果try正确就到else,如果try错误就到except;最后都要执行finally。

第8题

Python中将十进制20转化成八进制,我们可以使用下列哪个表达式?( )

A: bin(20)
B: int(20)
C: oct(20)
D: hex(20)

答案:C

用python中的数制转换函数进行十进制与八进制的转换

第9题

下列进制转换,正确的是?( )

A: 0x14转化为十进制,结果是20。
B: 20转化成八进制,结果是0o20。
C: 0x14转化为十进制,结果是22。
D: 20转化成八进制,结果是0o30。

答案:A

二进制、十进制、十六进制的概念及互相转换,并且会使用Python中的数制转换函数。

第10题

关于二进制、八进制、十六进制与十进制相互转换,下列说法正确的是?( )

A: 十六进制转化为十进制,可以使用除16求余数,再顺序输出。
B: 二进制转化为十进制,可以使用除2求余数,再逆序输出。
C: 十六进制转化为十进制,可以使用除16求余数,再逆序输出。
D: n位二进制能表示的最大十进制数是2的n次方减一。

答案:D

理解n位二进制能表示的最大十进制数是2的n次方减一。

第11题

将十进制2022转化成十六进制,可以使用下列哪个表达式?( )

A: bin(2022)
B: int(2022)
C: oct(2022)
D: hex(2022)

答案:D

hex(2022)运行结果是’0x7e6’,为十六进制。

第12题

abs(-4.8)运行的结果是?( )

A: 4.8
B: -4
C: -5
D: 5

答案:A

abs()是求绝对值函数。

第13题

关于ord( )函数与chr( )函数,下列说法正确的是?( )

A: ord( )函数的参数是整数。
B: ord( )函数的参数是字符串类型。
C: chr( )函数的参数是字符串类型。
D: chr( )函数返回的数据类型是int。

答案:B

ord( )函数是返回字符所对应的ASCII值。因此其参数为字符串类型。chr()函数是将对应的ASCII值转换为相应字符。其参数为数值。

第14题

运行下列程序,输出的结果是?( )

a=[34,7,8,23]
max(a)+abs(-5)

A: 12
B: 13
C: 18
D: 39

答案:D

max()是求最大值,abs()是求绝对值。故程序的功能是将34与5相加。

第15题

set(‘小明你好’)运行的结果是?( )

A: [‘好’, ‘你’, ‘明’, ‘小’] # 列表中,文字顺序不固定
B: (‘好’, ‘你’, ‘明’, ‘小’) #元组中,文字顺序不固定
C: {‘好’, ‘你’, ‘明’, ‘小’} #集合中,文字顺序不固定
D: {‘你’, ‘好’, ‘小’, ‘明’} #文字顺序固定

答案:C

set()函数可将文本转为集合,集合的特点是元素顺序不固定,所以正确答案是C。

第16题

如下程序:

a=[5,10,32,7]
  for i in a:
      print(i,:,bin(i))

该程序段的功能是?( )

A: 分别输出5,10,32,7的二进制数。
B: 分别输出5,10,32,7的八进制数。
C: 分别输出5,10,32,7的在列表中的索引位置。
D: 分别输出5,10,32,7的十六进制数。

答案:A

bin() 转换为二进制,oct() 转换为八进制,hex() 转换为十六进制。故程序功能是将列表中数字一一转换为对应的二进制数。

第17题

下列表达式的值最大的选项是?( )

A: len([1,2,3,4,5,789])
B: max([78,6,5,67] )
C: abs(-90)
D: round(38.4)

答案:C

len()表示求长度,为6;max()表示求最大值,为78;abs()求绝对值,为90;round()表示四舍五入,小数位数参数省略表示保留到整数位,为38。

第18题

divmod(6,2)的运行结果是?( )

A: 8
B: 4
C: (3,0)
D: (0,3)

答案:C

divmod(6,2)返回包含商和余数的元组,即(3,0)。

第19题

如果不知道对象的数据类型,我们可以使用什么函数查看?( )

A: type()
B: dir()
C: set()
D: help()

答案:A

type()函数返回对象的类型。

第20题

运行下列程序,输出的结果是?( )

x=7
print(eval(“x+4))

A: 输出”x+4”
B: 输出数字11
C: 输出“7+4”
D: 程序出错

答案:B

eval() 函数用来执行一个字符串表达式,并返回表达式的值,因此输出7+4的计算结果。

第21题

关于enumerate()函数的说法不正确的是?( )

A: 该函数是Python内置函数。
B: 该函数可用于判断数据类型是否是数值类型。
C: 该函数可将一个可遍历对象按照设置的序号组合成一个索引序列。
D: 该函数通常用在for循环中,可返回一个内部由一个个元组组成的列表。

答案:B

enumerate()函数是Python的内置函数,可以将一个可遍历/可迭代对象按照设置的序号组成一个索引序列,通常结合for循环使用,返回一个列表,内部由序号和原有元素组成的元组组成。

第22题

enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列。下列程序

example = '7890'
for i,j in enumerate(example):
    print(i,j)

运行后的输出结果是?( )

A:

0,7
1,8
2,9
3,0

B:

(0 7)
(1 8)
(2 9)
(3 0)

C:

0 7
1 8
2 9
3 0

D:

(0,7)
(1,8)
(2,9)
(3,0)

答案:C

本题考查学生对enumerate()函数的理解与掌握,正确答案是选项C。

第23题

关于算法描述的三种基本结构,下列哪项正确?( )

A: 顺序结构、选择结构、循环结构。
B: if选择结构、for循环、while循环。
C: 处理框、判断框、流程线。
D: 自然语言、流程图、程序设计语言。

答案:A

算法描述的三种基本结构是顺序结构、选择结构和循环结构。它们是算法设计中最基本的控制结构,用于组织和控制程序的执行流程。

顺序结构是按照代码的编写顺序,依次执行每条语句,没有分支和循环。

选择结构使用条件判断语句(如 if 语句)根据条件的真假来选择不同的执行路径。根据条件的结果,可以选择执行某个代码块或跳过该代码块。

循环结构使用循环语句(如 for 循环、while 循环)来重复执行一段代码,直到满足退出循环的条件。

因此,选项 A: 顺序结构、选择结构、循环结构 是正确的描述。

第24题

“韩信点兵”是一个古老的数学问题,可以应用中国剩余定理进行求解。以下是使用计算机解决“韩信点兵”问题的几个步骤:
①编写Python程序,用计算机进行处理。
②设计“韩信点兵”求解算法。
③验证算法的功能和性能。
④分析问题,确定解题任务。
使用计算机解决“韩信点兵”问题,正确的步骤是下列哪一项?( )

A: ②④①③
B: ④①②③
C: ④②③①
D: ④②①③

答案:D

解决"韩信点兵"问题的正确步骤如下:

④ 分析问题,确定解题任务。首先需要理解"韩信点兵"问题的要求和条件,明确需要解决的任务。

② 设计"韩信点兵"求解算法。根据问题的要求和条件,设计一个算法来解决"韩信点兵"问题。这个算法可以基于中国剩余定理等数学方法。

① 编写Python程序,用计算机进行处理。在了解问题要求后,编写Python程序来实现解决算法。

③ 验证算法的功能和性能。通过测试和验证程序的功能和性能,确保算法能够正确解决"韩信点兵"问题,并且在合理的时间范围内执行。

因此,正确的步骤是 D: ④②①③。

第25题

小明使用Python编程模拟绘制了物体在自由落体运动过程中产生的抛物线轨迹。小明设计的这一算法属于下列哪一种?( )

A: 枚举算法
B: 解析算法
C: 排序算法
D: 对分查找算法

答案:B

解析算法是一种通过分析问题的数学模型和公式,通过计算和推导来解决问题的算法。在这种情况下,小明使用了物体自由落体的物理公式和运动学方程,通过计算和绘制抛物线轨迹来模拟物体的运动过程。

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

第26题

小明编写了代码一,小红看到后说:“我写的代码二,打印出来的结果与小明的代码一相同”。请判断,小红所说对吗?( )
代码一:

f = open('成绩.csv', 'r')
for i in f:
    a = i.strip('\n').split(',')
    print(a)
f.close

代码二:

f = open('成绩.csv', 'r')
a = []
for i in f:
    a.append(i.strip('\n').split(','))
f.close
print(a)

答案:错误

小明的代码一,每次循环都会读取文档的下一行,并将该行用英文逗号切分成列表,再打印出来;小红的代码二,是读取每一行,以英文逗号切分为列表,并追加到列表变量a的尾巴后面,最后再打印变量a。两者打印出的结果不同。

第27题

有一个名为“身体素质.csv”的文件,内容为学生的姓名、身高和体重,文件内容如下:

李四,127,32
王五,131,34
赵六,129,33

小明想编写代码,在整个文件的首行,插入数据“张三,133,36”,他编写了如下代码,请判断,代码能正确运行吗?( )

f = open('身体素质.csv', 'a')
f.seek(0,0)  #用seek()方法,将文件指针移动到整个文件的最前面。
f.write('张三,133,36\n')
f.close()

答案:错误

open()函数的参数’a’,是追加数据到文件末尾,seek()函数虽然能移动读取文件时的指针位置,但并不能移动写入文件时的位置,所以答案为错误。

第28题

使用异常处理的方式执行程序时,当try里面的程序出现数据类型输入错误时,执行except ZeroDivisionError下面的语句;当try里面的程序出现除数为零的错误时,执行except ValueError下面的语句。( )

答案:错误

当try里面的程序出现数据类型输入错误时,执行except ValueError下面的语句;当try里面的程序出现除数为零的错误时,执行except ZeroDivisionError下面的语句。

第29题

八进制数0o10转化成十六进制数为0x8。( )

答案:正确

二进制、十进制、十六进制的概念及互相转换,并且会Python中的数制转换函数。

第30题

执行代码print(type(0x20)),运行结果是。( )

答案:正确

了解八进制数也是一个整型

第31题

divmod()函数执行结果是返回一个包含商和余数的元组。( )

答案:正确

divmod() 函数是一个内置函数,在Python中用于执行整数除法,并返回一个包含商和余数的元组。该函数接受两个参数,分别是被除数和除数。它返回的元组的第一个元素是商,第二个元素是余数。

例如,使用 divmod(10, 3) 进行计算,结果为 (3, 1),其中 3 是商,1 是余数。

第32题

all()函数用于判断给定的可迭代参数中的所有元素是否都为False,若是返回True,否则返回False。( )

答案:错误

all()函数用于判断给定的可迭代参数中的所有元素是否都为True,若是返回True,否则返回False。

第33题

any()函数用于判断给定的可迭代参数中的所有元素是否都为True,若是返回True,否则返回False。( )

答案:错误

any()函数用于判断给定的可迭代参数中的所有元素是否都为False,若是返回False,否则返回True。

第34题

有查看函数或模块说明功能的函数是help()。( )

答案:正确

help()函数主要用于查看函数或模块用途的详细说明,返回对象是帮助信息。

第35题

小明编写了如下所示的3行代码 :

list1 = ['赵','钱','孙','李','周','吴','郑','王'] 
print(list1[1:-4]) 
print(list1[1:4]) 

小红看到代码后说:“小明,你这代码第2行与第3行,两次运行的print()函数,结果完全相同呀。”
请判断,小红所说,是否正确?( )

答案:正确

考查学生对列表切片时,切片起始位置、终止位置的理解。本题运行结果,2行Print()都会打印出[‘钱’, ‘孙’, ‘李’],所以小红所说是正确的。

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

第36题

小明用冒泡排序算法编写了一段代码,请帮他把代码中红色标记的①②③处,补充完整。

a = [8,4,2,11,3,9]
n = len(a)
for i in range(0,):
    for j in range(0,):
        if a[j]>a[]:
            a[j],a[j+1] = a[j+1],a[j]      
print(a)

答案:

a = [8, 4, 2, 11, 3, 9]
n = len(a)
for i in range(0, n):  # ① 将范围修改为 n
    for j in range(0, n - i - 1):  # ② 将范围修改为 n - i - 1
        if a[j] > a[j + 1]:  # ③ 修改为 j + 1
            a[j], a[j + 1] = a[j + 1], a[j]
print(a)

冒泡排序算法的基本思想是通过相邻元素的比较和交换,将最大(或最小)的元素逐步“冒泡”到数组的末尾。其中,外层的循环控制每一轮的比较次数,内层的循环用于相邻元素的比较和交换。

在给定的代码中,需要将红色标记的部分补充完整:

① 将范围修改为 n,比较所有元素。

② 将范围修改为 n - i - 1,因为每一轮比较后,最大的元素已经冒泡到了数组的末尾,所以不需要再比较。

③ 将 a[j] 后面的索引修改为 j + 1,即相邻元素的比较。

这样,补充完整后的代码就可以正确地执行冒泡排序,并输出排序后的数组。

第37题

下面程序,按字典序列统计出单词的个数,执行结果如下:

are:2
first:2
happy:1
is:3
your:2

请补全下列代码中的①②③④四处。

a=['is','happy','is','your','are','first','first','is','are','your']
n=len(a)-1
for i in range(0,n):
    for j in range(i+1,n+1):
        if a[i]>a[j]:
                  ①     
key=a[0]
i=1
ans=1
while i<=n:
    if key==a[i]:
               ②    
        i+=1
    else:
        print(a[i-1]+':'+str(ans))
        key=a[i]
               ③     
        i+=1

答案:

a = ['is', 'happy', 'is', 'your', 'are', 'first', 'first', 'is', 'are', 'your']
n = len(a) - 1
for i in range(0, n):
    for j in range(i + 1, n + 1):
        if a[i] > a[j]:
            a[i], a[j] = a[j], a[i]  # ① 交换位置
key = a[0]
i = 1
ans = 1
while i <= n:
    if key == a[i]:
        ans += 1  # ② 统计个数
        i += 1
    else:
        print(a[i - 1] + ':' + str(ans))
        key = a[i]
        ans = 1  # ③ 重置个数
        i += 1
print(a[n] + ':' + str(ans))  # ④ 输出最后一个单词的个数

给定的代码中,首先对列表 a 执行了字典序排序,然后通过遍历统计每个单词的个数并输出。

补全的部分如下:

① 通过交换位置来实现字典序排序。

② 在循环中统计相同单词的个数。

③ 当遇到不同的单词时,输出上一个单词的个数并重置个数。

④ 循环结束后,输出最后一个单词的个数。

这样,补全的代码就可以正确地按字典序统计出单词的个数,并输出结果。

第38题

请读取文件"cj.csv"的数据,数据内容如下图所示:

2022年06月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试_第5张图片

下列代码实现了读取“姓名”和“体质测试”信息,输出“体质测试”考核为A的数量(大于等于85分)并显示相应同学姓名,请你补全代码。

import csv
with open('cj.csv') as f:
    rows = list()
    n=0
    for row in rows[1:]:
        if:
            print(row[0])
            n+=1
print(n) 

答案:

import csv
with open('cj.csv') as f:
    rows = list(csv.reader(f))  # ① 读取CSV文件的每一行数据
    n = 0
    for row in rows[1:]:
        if int(row[1]) >= 85:  # ② 判断体质测试成绩是否大于等于85
            print(row[0])  # 输出相应同学的姓名
            n += 1
print(n)

在给定的代码中,我们使用了csv模块来读取CSV文件。补全的部分如下:

① 使用 csv.reader() 函数将文件对象 f 转换为一个列表,其中每个元素代表CSV文件中的一行数据。

② 判断体质测试成绩是否大于等于85分,如果是,则输出相应同学的姓名。

最后,通过变量 n 统计体质测试考核为A的数量,并输出结果。

补全后的代码可以读取文件"cj.csv"的数据,输出体质测试考核为A的数量并显示相应同学的姓名。

你可能感兴趣的:(python,开发语言,等级考试,电子学会)