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

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

Python编程(1~6级)全部真题・点这里

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

第1题

下列代码的输出结果是?( )

x = 0x10

print(x)

A:2
B:8
C:10
D:16

答案:D

在代码中,x = 0x10 表示将十六进制数 0x10 赋值给变量 x。在十六进制表示法中,0x10 表示十进制数 16。然后,print(x) 打印变量 x 的值,即 16。

第2题

关于语句f=open(‘d:/a.txt’, ‘r’),下列描述不正确的是?

A:f是变量
B:'r’以只读方式打开文件
C:如果文件a.txt不存在,不会报错
D:‘d:/a.txt’是文件路径,代表d盘中一个名为‘a.txt’的文件

答案:C

如果文件a.txt不存在,执行该语句将会引发一个文件不存在的错误。在只读模式下打开文件时,如果指定的文件不存在,Python 将引发 FileNotFoundError 异常。因此,选项 C 是不正确的描述。

第3题

表达式 all([1,True,True])的结果是?

A:1
B:False
C:出错
D:True

答案:D

all() 函数用于判断给定的可迭代对象中的所有元素是否都为真。在这个表达式中,传入的可迭代对象是 [1, True, True]。由于所有的元素都是真值(非零整数和布尔值 True 都被视为真值),因此 all() 函数返回 True。

第4题

Python中表示合法的二进制整数是?

A:0bC3F
B:0B1010
C:0B1019
D:0b1708

答案:B

在Python中,合法的二进制整数表示应该以前缀 “0b” 或 “0B” 开头,后面跟随二进制数字。根据这个规则,从提供的选项中,只有选项 B:0B1010 是一个合法的二进制整数表示。

第5题

执行语句x,y,z=tuple([2,1,3])之后,变量y的值为?

A:1
B:2
C:[1]
D:[2,1,3]

答案:A

该语句使用元组解包的方式将列表 [2, 1, 3] 的元素分配给变量 x、y 和 z。由于列表中的第二个元素是 1,所以它被分配给变量 y。

第6题

下列代码的执行结果是?( )

ls=[[1,2,3],[[4,5],6],[7,8]]

print(len(ls))

A:1
B:3
C:4
D:8

答案:B

在代码中,ls 是一个包含三个元素的列表,其中每个元素都是一个子列表。len(ls) 返回列表 ls 的长度,即其中包含的元素个数。因此,print(len(ls)) 的输出结果为 3。因此,选项 B:3 是正确的结果。

第7题

下列能产生列表[1, 3, 5, 7, 9]的表达式是?

A:list(range(0,9))
B:list(range(1,10))
C:list(range(0,9,2))
D:list(range(1,10,2))

答案:D

range(1, 10, 2) 表示从 1 开始,以步长 2 生成一个范围内的数字序列。这个表达式将生成数字序列 [1, 3, 5, 7, 9]。然后,使用 list() 函数将这个数字序列转换为列表。

第8题

二维列表data中,元素"3"的表示是?( )

data = [ [1,2],[3,4] ]

A:data[0][0]
B:data[0][1]
C:data[1][0]
D:data[1][1]

答案:C

列表 data 是一个包含两个子列表的二维列表。要访问元素 “3”,我们需要使用索引操作符 [] 来指定所需的行和列的索引。在这个例子中,“3” 位于第二个子列表(索引为 1)的第一个位置(索引为 0)。因此,data[1][0] 表达式表示列表 data 中的元素 “3”。

第9题

下列代码的输出结果是?( )

n = 2

b=bool(n-2)

print(n, b)

A:2 0
B:0 True
C:2 False
D:0 False

答案:C

在代码中,n 被赋值为 2。然后,bool(n-2) 表示对表达式 n-2 的结果进行布尔运算,即对 0 进行布尔运算。在Python中,bool(0) 的结果为 False。然后,print(n, b) 打印变量 n 和 b 的值,分别为 2 和 False。

第10题

键盘输入数字10,以下代码的输出结果是?( )

try:

n = input("请输入—个整数: ")

n= n*n

except:

print("程序执行错误")

A:100
B:10
C:程序执行错误
D:程序没有任何输出

答案:C

在代码中,使用 input() 函数从键盘读取输入,并将其赋值给变量 n。然后,n = n * n 尝试计算 n 的平方。但是,由于用户输入的是字符串类型,而不是数字类型,所以无法执行乘法操作,会引发一个类型错误。在 try-except 语句中,当发生异常时(这里是类型错误),程序会跳转到 except 代码块。因此,会输出 “程序执行错误”。

第11题

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

for i in reversed(range(10, 0, -2)): 
	print(i,end=" ")

A:2 4 6 8 10
B:0 2 4 6 8 10
C:12345678910
D:9 8 7 6 5 4 3 2 1 0

答案:A

在代码中,使用 reversed() 函数以逆序生成一个范围内的数字序列。range(10, 0, -2) 表示从 10 开始,以步长 -2(递减2)生成数字序列,直到大于 0 为止(不包括 0)。然后,使用 for 循环遍历这个逆序的数字序列,并将每个数字打印出来。通过 end=" " 设置打印结束时使用空格作为分隔符。因此,程序的输出结果是 2 4 6 8 10。

第12题

有如下列表1=[10,1,9,6,3,4],采用冒泡排序进行升序排序,请问第一趟排序之后的结果是?

A:[1,3,9,6,10,4]
B:[1,9,6,3,4,10]
C:[1,6,3,4,9,10]
D:[1,3,4,6,9,10]

答案:B

冒泡排序是一种交换排序算法,它通过多次遍历列表,并在每次遍历中比较相邻的元素并进行交换,将较大的元素逐步向列表的末尾冒泡。在第一趟排序中,比较的是相邻的元素对,如果前面的元素大于后面的元素,则进行交换。根据给定的列表 [10, 1, 9, 6, 3, 4],在第一趟排序中,比较的元素对是 (10, 1),(1, 9),(9, 6),(6, 3),(3, 4)。根据比较结果,需要进行以下交换:(10, 1),(9, 6),(6, 3),(3, 4)。因此,第一趟排序后的结果是 [1, 9, 6, 3, 4, 10]。

第13题

表达式max(3,min(5,1,7))的结果是?

A:1
B:3
C:5
D:7

答案:B

在这个表达式中,min(5, 1, 7) 返回给定数字序列中的最小值,即返回 1。然后,max(3, 1) 返回给定数字序列中的最大值,即返回 3。

第14题

set() 函数通过交集、差集、并集等关系删除重复数据,创建一个无序不重复元素集。
下列程序执行结果正确的是?( )

x=set("中国")

y=set("美国")

print(x & y )

A:{‘中国’}
B:{‘美国’}
C:{‘中美国’}
D:{‘国’}

答案:D

在程序中,set() 函数用于创建一个无序且不重复的元素集合。set(“中国”) 表示将字符串 “中国” 转换为集合,即 {‘中’, ‘国’}。同样地,set(“美国”) 表示将字符串 “美国” 转换为集合,即 {‘美’, ‘国’}。通过使用交集操作符 &,可以获取两个集合的交集,即共有的元素。在这个例子中,集合 x 和集合 y 的交集是 {‘国’}。

第15题

下列不能用于异常处理结构中捕获特定类型的异常的语句是?

A:try-else语句
B:try-except语句
C:try-except-else语句
D:try-except-finally语句

答案:A

try-else语句并不是用于捕获异常的方式,所以它是不能用于捕获特定类型的异常的语句。

第16题

下列表达式的结果不为10的是?

A:sum([1,2,3,4])
B:sum((1,2,3),4)
C:sum([1,2,3],4)
D:sum([1,2],[3,4])

答案:D

sum() 函数用于计算可迭代对象中元素的总和。在选项A中,sum([1, 2, 3, 4]) 的结果是 10,因为 1 + 2 + 3 + 4 = 10。在选项B中,sum((1, 2, 3), 4) 的结果也是 10,因为 1 + 2 + 3 + 4 = 10。在选项C中,sum([1, 2, 3], 4) 的结果是 10,因为 1 + 2 + 3 + 4 = 10。然而,在选项D中,sum([1, 2], [3, 4]) 的结果不是 10。由于 sum() 函数的参数应该是可迭代对象,而此处的参数包含两个列表,无法直接求和。

第17题

表达式divmod(40,3)的结果是?

A:13,1
B:(13,1)
C:13
D:1

答案:B

divmod() 函数用于同时计算除法和取模操作。它返回一个包含两个值的元组,第一个值是整数除法的结果,第二个值是取模操作的结果。在这个例子中,40 除以 3 的整数部分是 13,余数是 1。因此,表达式 divmod(40, 3) 的结果是元组 (13, 1)。

第18题

小明想对列表arr = [5, 33, 21, 67, 39, 73, 7, 43 ]中的数值进行升序排序,于是他编写了“选择排序”程序,
在调试程序的过程,他故意将循环的次数改成了固定值,如下图所示。
请问,现在这个程序执行之后print(arr)打印出的结果应该是?( )

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

A:[5, 7, 21, 33, 39, 43, 67, 73]
B:[5, 7, 21, 33, 39, 73, 43,67]
C:[5, 7, 21, 67, 39, 73, 33, 43]
D:[5, 7, 21, 33, 39, 73, 67, 43]

答案:D

第19题

要表示10种不同的信息,需要的二进制位数至少为?

A:2
B:3
C、4
D、5

答案:C

二进制位数表示的是不同的组合数量,其中每个位可以是0或1。对于10种不同的信息,需要至少4个二进制位才能表示,因为 2 4 = 16 2^4 = 16 24=16,可以表示16种不同的组合。而3个二进制位只能表示8种不同的组合,不足以表示10种不同的信息。因此,选项 C:4 是正确的答案。

第20题

下列代码的输出结果是?( )

for i in range(1,6):

  if i%4== 0:

  continue

  else:

  print(i,end =",")

A:1,2,3,
B:1,2,3,4,
C:1,2,3,5,
D:1,2,3,5,6,

答案:C

在这段代码中,for循环从1到5迭代变量i。在每次迭代中,首先进行条件判断。如果i除以4的余数为0,则执行continue语句,跳过本次循环的剩余部分,继续下一次循环。否则,执行else块中的代码。在else块中,使用print语句打印i的值,以逗号结尾,并且不换行。

因此,循环迭代的结果是1、2、3、4、5。但是当i等于4时,满足条件i%4==0,执行continue语句,跳过了打印的步骤。所以最终的输出结果是1、2、3、5,以逗号分隔。

第21题

以下关于算法以及算法的描述,错误的是?

A:算法必须要在有限的步骤内完成
B:算法每个步骤的含义必须是确切的
C:算法必须有输入,但可以没有输出
D:算法可以没有输入,但必须要有输出

答案:C

算法必须有输入是正确的描述,因为算法是用于解决问题的一系列步骤或操作,它需要接受输入来进行处理和计算。然而,算法可以没有输出是错误的描述。算法的输出是算法的结果或解决方案,它可以是一个值、一个数据结构或者某种形式的信息。

第22题

八进制10与十六进制10相加,其对应的十进制数是?

A:20
B:26
C:24
D:18

答案:C

八进制数10对应的十进制数是8,十六进制数10对应的十进制数是16。将它们相加,8 + 16 = 24。

第23题

下列代码的输出结果是?( )

d ={"大海":"蓝色","天空":"灰色","大地":"黑色"}

print(d["大地"])

A:“大地”
B:大地
C:“黑色”
D:黑色

答案:D

给定的代码创建了一个字典 d,其中包含了三个键值对。在 print(d[“大地”]) 这行代码中,它将打印出字典 d 中键为 “大地” 对应的值。根据给定的字典,键 “大地” 对应的值是 “黑色”。因此,输出结果为 “黑色”。

第24题

假设city.csv文件内容如下,那么下列代码的输出结果是?

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

f=open("city.csv","r")

ls=f.read().split(",")

f.close()

print(ls)

A:[‘巴哈马’,‘巴林’,‘孟加拉国’,‘巴巴多斯\n白俄罗斯’,‘比利时’,‘伯利兹’]
B:[‘巴哈马’,‘巴林’,‘孟加拉国’,‘巴巴多斯’,‘白俄罗斯’,‘比利时’,‘伯利兹’]
C:[‘巴哈马,巴林,孟加拉国,巴巴多斯,白俄罗斯,比利时,伯利兹’]
D:[‘巴哈马’,‘巴林’,‘孟加拉国’,‘巴巴多斯’,‘\n’,‘白俄罗斯’,‘比利时’,‘伯利兹’]

答案:A

第25题

下列代码的输出结果是?( )

lis=list(range(4))

print(lis)

A:[0,1,2,3,4]
B:[0,1,2,3]
C:0,1,2,3,
D:0,1,2,3,4

答案:B

给定的代码创建了一个列表 lis,其中包含了范围从0到3的整数。list(range(4)) 创建了一个包含0、1、2、3的列表。然后,通过 print(lis) 打印了列表 lis 的内容。因此,输出结果为 [0, 1, 2, 3]。

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

第26题

int(‘0x25’,16)语句和int(‘25’,16)语句都能实现将十六进制数0x25转换成十进制数的功能。

答案:正确

int(‘0x25’, 16) 和 int(‘25’, 16) 这两个语句都可以将十六进制数 0x25 转换成十进制数。在这里,第一个参数是要转换的字符串,而第二个参数 16 表示使用十六进制进行转换。因此,这两个语句都能实现将十六进制数 0x25 转换成十进制数的功能。

第27题

使用open()函数打开’food.csv’文件后,返回的是列表。

答案:错误

使用open()函数打开文件后,返回的是文件对象,并不是列表。open()函数用于打开文件,并返回一个文件对象,通过该对象可以进行文件的读取或写入操作。要将文件内容转换为列表形式,可以使用相关的读取方法(如readlines())来读取文件中的内容,并将其存储为列表。

第28题

数据可分为一维数据、二维数据和多维数据。

答案:正确

数据可以根据其维度进行分类。一维数据是指只有一个维度或轴的数据,例如一维数组或列表。二维数据是指具有两个维度或轴的数据,例如二维数组或表格数据。多维数据是指具有多个维度或轴的数据,例如多维数组或多维表格数据。因此,数据可以根据其维度分为一维数据、二维数据和多维数据。

第29题

语句try-except-finally中finally语句无论异常是否发生都必须执行的语句。

答案:正确

finally语句是在try-except语句块中的代码执行完毕后,无论是否发生异常都会执行的部分。它通常被用于执行一些清理操作,如关闭文件或释放资源。无论try块中的代码是否引发异常,finally块中的代码都会被执行。因此,finally语句无论异常是否发生,都必须执行。

第30题

CSV文件的每—行是一维数据,可以使用Python中的列表类型表示。

答案:正确

CSV文件中的每一行通常表示一条记录或一组相关数据,可以将其视为一维数据。在Python中,列表类型可以用来表示一维数据,其中每个元素对应CSV文件中的一列数据或一个字段。通过将每一行解析为列表,可以方便地处理CSV文件中的数据。因此,CSV文件的每一行可以使用Python中的列表类型表示。

第31题

二进制数 1010111转换为十六进制数是 A7。

答案:错误

二进制数 1010111 对应的十六进制数是 2F。要将二进制数转换为十六进制数,可以将二进制数按照4位一组进行划分,然后将每组转换为对应的十六进制表示。在这个例子中,1010111 按照4位一组划分为 10 1011 1,对应的十六进制数为 2B1,而不是 A7。因此,二进制数 1010111 转换为十六进制数是 2B1,而非 A7。

第32题

abs()函数的功能是将对小数进行取整,abs(-2.3)的运行结果是2。

答案:错误

abs()函数是用于取绝对值的函数,而不是用于取整数部分的函数。abs()函数返回一个数的绝对值,即该数与零的距离。对于小数,abs()函数会返回其绝对值而不进行取整操作。因此,abs(-2.3)的结果是2.3的绝对值,即2.3,而不是2。所以,判断题中的说法是错误的。

第33题

chr()函数用于将对象转换成字符串。

答案:错误

chr()函数用于将 Unicode 码点转换为对应的字符。它接受一个整数参数,该整数代表 Unicode 码点,然后返回对应的字符。因此,chr()函数将整数对象转换为对应的字符。然而,chr()函数并不会将所有的对象都转换为字符串,它只是将整数值转换为对应的字符表示。如果想要将其他类型的对象转换为字符串,可以使用str()函数来实现。所以,chr()函数用于将整数对象转换为字符,而不是将对象转换为字符串。

第34题

enumerate() 函数将字符串、列表、元组、字典等组合为索引序列,同时列出数据和数据下标。

答案:正确

enumerate() 函数用于将一个可迭代对象(如字符串、列表、元组、字典等)组合为索引序列,同时返回数据和数据的下标。它返回一个迭代器,每个元素都是一个包含索引和对应数据的元组。通过使用 enumerate() 函数,可以方便地遍历数据同时获取数据的下标。因此,判断题中的说法是正确的。

第35题

senson=["春","夏","秋","冬"]

senson.remove("秋")

print(senson)

执行上面程序,结果为[‘春’, ‘夏’, ‘冬’]

答案:正确

程序中的 senson 是一个列表,包含了四个元素:春、夏、秋、冬。通过 senson.remove(“秋”) 这行代码,我们移除了列表中的 “秋” 元素。然后,通过 print(senson) 打印输出列表 senson 的内容。因此,输出结果为 [‘春’, ‘夏’, ‘冬’],即移除了 “秋” 元素后的列表。

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

第36题

一个四位数,如果在它的左边加一个数字8,就可以得到一个五位数;如果在它的右边加一个数字6,就可以得到另一个五位数,这两个五位数的和是121410。请问原来这个四位数是多少?
现在请你编写程序,求出这个四位数。
补全下面的代码:

for a in range():

  for b in range():

    for c in range(0,10):

      for d in range(0,10):

        if ()+() == 121410:

          print(a,b,c,d)

参考程序:

for a in range(1,10):

  for b in range(0,10):

    for c in range(0,10):

      for d in range(0,10):

        if (80000+a*1000+b*100+c*10+d)+(a*10000+b*1000+c*100+d*10+6) == 121410:

          print(a,b,c,d)

解析:

这段代码使用嵌套的循环遍历四个数字 a、b、c 和 d,从而找到满足条件的数字组合。通过计算两个五位数的和与给定值 121410 进行比较,找到满足条件的组合后,将 a、b、c 和 d 打印出来。这段代码将遍历所有可能的四位数组合,并输出满足条件的结果。

第37题

请读取文件/data/subways.csv的数据,数据内容如下图显示:
2021年03月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试_第4张图片

下列代码实现了读取“学号”和“身高”信息,输出“身高”达到120的学号,请你补全代码。

import csv

with open('/data/① ') as f:

  rows = list( csv.reader (f))

  for row in rows[1:]:

    if(int(row[1])>=120):

    print()

参考程序:

import csv 

with open('/data/subways.csv') as f:

  rows = list( csv.reader (f))

  for row in rows[1:]:

    if(int(row[1])>=120):

      print(row[0]) 

解析:

首先,我们使用 with open() 语句打开文件,指定文件路径为 /data/subways.csv。
csv.reader() 函数用于创建一个 CSV 文件的读取器对象。
我们将读取器对象传递给 list() 函数,将其转换为列表形式,并将结果保存在变量 rows 中。
在 for 循环中,我们遍历 rows[1:],跳过首行(标题行)。
使用 int(row[1]) 将身高数据转换为整数,并与 120 进行比较。
如果身高大于等于 120,则打印对应的学号 row[0]。

第38题

有一组数据[0,20,0,4,31]存放在nums中,请将列表中的所有零移动到列表尾。

nums=[0,20,0,4,31]

initLen = ①

i=0

j=0

while i<initLen:

  if:= nums[i]

    j+=1

    i+=1=( len(nums)-j)*[0]

print()

参考程序:

nums=[0,20,0,4,31] 

initLen = len(nums)

i=0

j=0

while i<initLen:

  if nums[i]!=0:

    nums[j]= nums[i]

    j+=1

    i+=1

    nums[j:]=( len(nums)-j)*[0]

print(nums) 

解析:

initLen 变量用于存储初始列表 nums 的长度。
i 和 j 分别表示遍历和写入的索引。
在 while 循环中,我们遍历列表 nums。
如果当前元素 nums[i] 不等于 0,则将其写入到 nums[j] 的位置,并将 j 增加 1。
无论 nums[i] 是否为 0,i 都会增加 1,以继续遍历。
循环结束后,通过将列表的剩余部分(从索引 j 开始)替换为零,实现将所有零移动到列表的尾部。
最后,我们打印输出更新后的列表 nums。

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