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

编程入门 行业动态 更新时间:2024-10-16 02:28:01

2023年03月 Python(三级)真题解析#<a href=https://www.elefans.com/category/jswz/34/1764266.html style=中国电子学会#全国青少年软件编程等级考试"/>

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

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

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

第1题

十进制数111转换成二进制数是?( )

A: 111
B: 1111011
C: 101111
D: 1101111

答案:D

十进制转二进制,采用除二倒取余数,直到商为0为止。

第2题

某班有36人,王老师想给每位同学分配一个二进制的学号,那么该学号至少需要多少位?( )

A: 36
B: 5
C: 6
D: 7

答案:C

1个二进制位可以编制2个号码,即0、1,2个二进制位可以编制2×2个号码,即00、01、10、11, 3个二进制位可以编制2×2×2个号码,即000、001、010、011、100、101、110、111,依次类推,5个2相乘可以得到32个号码,不够用,故需要6位。

第3题

数据的存储形式多种多样,如s1=[[“李亮”,“98”],[“王宁宁”,“95”],[“莫晓珍“,“88”]],s2=[“李亮”,“98”,“王宁宁”,“95”,“莫晓珍“,“88”],有关s1与s2下列说法正确的是?( )

A: 都是用列表实现的
B: s1是一维列表
C: s2是二维列表
D: 要取出“王宁宁”同学的成绩,方法是一样的,用s1[4]或s2[4]

答案:A

Python中列表用[ ]表示。s1是二维列表,s2是一维列表。S[1]中用s1[1][1]取出“王宁宁”同学的成绩,s2中可用s2[3]取出“王宁宁”同学的成绩。

第4题

a=["跳绳","跳高","跳远","铅球"] 
fs=open("sports.csv","w")
fs.write(" ".join(a)+'\n')
fs.close()

关于上述代码,下列说法正确的是?( )

A: 若”sports.csv”文件不存在,则程序出错
B: 程序的最后结果是:跳绳 跳高 跳远 铅球
C: 程序中的fs.close()代码可有可无
D: “w”参数表示不能修改原csv文件

答案:B

程序段的功能是表示将a列表中各项元素用空格符进行连接,并写入到sports.csv文件中,“w”表示可写入。若文件不存在,可自动创建。

第5题

现有水果价格数据jg=[[‘草莓’,15],[‘梨子’,9],[‘苹果’,10],[‘桔子’,4]],需要将其打印成二维表格数据形式,程序代码如下:

jg=[[‘草莓’,15],[‘梨子’,9],[‘苹果’,10],[‘桔子’,4]]
for row in range(len(jg)):for col in range(len(jg[row])):print(____________,”\t”)

上述划线处代码是?( )

A: jg[row]
B: jg[col]
C: jg[col][row]
D: jg[row][col]

答案:D

外循环遍历每个子列表的索引,内循环遍历子列表中每项元素的索引。

第6题

运行下列程序段:

try:a=int(input("请输入被除数:"))b=int(input("请输入除数:"))x=a/bprint("商是:",x)
except:print("输入有错!请检查。")
else:print("正确!")
finally:print("程序结束。")

若输入a为8,b为4,则输出结果是?( )

A:

商是:2
正确!

B:

商是:2
正确!
程序结束。

C:

商是:2.0
程序结束。

D:

商是:2.0
正确!
程序结束。

答案:D

当try语句块正确时,执行try代码块结束,将执行else语句块,最后执行finally语句块。当输入有误,则执行except语句块和finally语句块。

第7题

已知A的ASCII码值为65,

s=”China”
k=abs(-4.8)

则表达式ord(min(s))+k的值是?( )

A: 71.8
B: 63
C: 61
D: 62

答案:A

min()取最小值,ord()求得对应字符的ASCII码值,abs()则为绝对值函数。C的ASCII码值为67,67+4.8=71.8。

第8题

divmod(8,5)的结果是?( )

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

答案:C

divmod()函数返回的是商和余数组成的元组,而不是列表,也不是单个的商或余数。

第9题

若有代码:

name=[“李明”,“王宁”,“朱倩”]
for a,i in enumerate(name):print(a,i)

则显示的结果是?( )

A:

0 李明
1 王宁
2 朱倩

B:

李明
王宁
朱倩

C:

李明,王宁,朱倩

D:

1 李明
2 王宁
3 朱倩

答案:A

enumerate()函数用于将序列对象组合为索引与数据元素的元组。程序中的a和i分别遍历元组中的索引和数据元素。索引从0开始。

第10题

有关于print()语句的运用,下列输出结果有误的是?( )

A: print(“Happy!”)
B: print(李明)
C: print('Happy!’)
D: print(2023)

答案:B

print()是输出语句。Python中字符串带单引号、双引号或三引号,变量名不带引号,“李明”这个变量并没有进行赋值,故直接输出将发生错误。2023是数值类型,可直接输出。

第11题

若s=”y\nea\tr”,则len(s)的值为?( )

A: 8
B: 4
C: 6
D: 5

答案:C

len()表示求字符串长度,\n和\t是转义字符,分别占一个字符长度。其它各为一个长度。

第12题

b=[1,2,3,4,5],则sum(b)的值是?( )

A: 10
B: 14
C: 15
D: 12

答案:C

给定列表b=[1,2,3,4,5],sum(b)函数用于计算列表中所有元素的总和。对于列表b中的元素,1+2+3+4+5=15,因此sum(b)的值是15。

第13题

某算法的流程图如图所示,则该流程图的结构属于?( )

A: 顺序结构
B: 分支结构
C: 树形结构
D: 循环结构

答案:D

算法的基本结构有顺序结构、分支结构(也叫选择结构)、循环结构。循环结构的特点是在满足某一条件的情况下,重复进行某些操作,直到条件不满足。

第14题

有如下代码:

a=[25,37,49,64,73,75,85,91]
t=i=0
j=len(a)-1
key=int(input())
while i<=j:m=(i+j)//2if  a[m]==key:breakelif a[m]>key:j=m-1else:i=m+1t+=1
print(t)

若输入的key值是73,则程序输出的结果是?( )

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

答案:C

这是一道对分查找算法题。主要功能是在列表a中查找数字73,输出查找次数。根据i,j的初始值,m=(0+7)//2=3,第一次对分访问的数据是64,由于64<73,第二次查找范围是i=4,j=7不变,此时t=1;第二次对分访问的是5号索引位上的75,由于75>73,第三次查找的范围是i=4不变,j=4,此时t=2;第三次对分访问的是4号索引位的73,由于73==73,执行break中断整个循环,故t+=1不执行,最后t的值为2。

第15题

hex函数可以将十进制数转换成十六进制数。在Python交互式编程环境下,执行语句hex(2023)后,显示的运行结果是?( )

A: “0x7e3”
B: “0x7e6”
C: “0x7e7”
D: “0x7e8”

答案:C

在Python中,hex()函数用于将十进制数转换为十六进制数的字符串表示。执行hex(2023)后,将把十进制数2023转换为十六进制数,并以字符串形式返回。

对于十进制数2023,它的十六进制表示为"7e7"。Python中的hex()函数会在结果前面添加前缀"0x",以表示这是一个十六进制数。

因此,执行hex(2023)后,显示的运行结果是C: “0x7e7”。

第16题

int() 函数用于将一个字符串或数字转换为整型。在Python交互式编程环境下执行以下语句,会出现错误的一项是?( )

A: int()
B: int(1.0)
C: int(0x20,16)
D: int(‘2023’,8)

答案:C

int()函数的第一个参数应该是一个字符串或数字,而不是两个参数。0x20 是一个十六进制的整数,但是在转换为整数时,不需要指定基数,因此正确的写法是 int(0x20)。

第17题

一维数据可以存储在CSV格式文件中,下列描述正确的是?( )

A: 必须采用逗号分隔数据元素
B: 必须采用空格来分隔数据元素
C: 必须采用分号分隔数据元素
D: 允许采用特殊字符来分隔数据元素

答案:D

CSV格式文件允许采用特殊字符来分隔数据元素。

第18题

如果需要使用open函数以可读可写的方式打开一个存储二维数据的CSV文件,则open函数的文件打开模式不能设置成?( )

A: rw
B: r+
C: w+
D: a+

答案:A

open函数没有rw打开文件的模式。

第19题

在try…except…else…finally异常处理机制中,如果发生异常则完全不会被执行的代码块是?( )

A: try代码块
B: except代码块
C: else代码块
D: finally代码块

答案:C

Python异常处理机制中,如果发生异常则完全不会被执行的代码块是else代码块。

第20题

下列数据对象中,不能使用len()函数获取数据对象长度的是?( )

A: 2023
B: [2, 0, 2, 3]
C: [“Go”, “China!”]
D: (“Go”, “China!”)

答案:A

在Python中,len()函数用于获取字符串、列表、元组和其他可迭代对象的长度。然而,当应用于像2023这样的整数时,它会引发TypeError,因为整数不是可迭代的,也没有长度属性。

第21题

在Python交互式编程环境下,输入print(list(range(0,5,2)))语句,执行的结果是?( )

A: 存在语法错误,不能执行
B: [0,1]
C: [0, 1,2, 3,4,5]
D: [0, 2, 4]

答案:D

在Python中,range()函数用于生成一个整数序列,其参数可以指定起始值、终止值和步长。在此例中,range(0, 5, 2)会生成一个从0开始,步长为2,不包含5的整数序列。

使用list()函数将range对象转换为列表,然后通过print语句打印输出。因此,执行print(list(range(0, 5, 2)))语句后,会输出[0, 2, 4]。

第22题

在交互式编程环境下,执行all([0,1,2,3])语句后,返回的值是?( )

A: True
B: False
C: 1
D: 4

答案:B

all() 函数用于判断可迭代对象中的所有元素是否都为真。如果可迭代对象中的所有元素都为真,则返回 True;否则,返回 False。

在给定的列表 [0, 1, 2, 3] 中,0 被视为假值,而其他的数字都被视为真值。由于列表中存在一个假值,即 0,所以 all([0, 1, 2, 3]) 返回 False。

第23题

在交互式编程环境下,输入float(“1”)语句,执行的结果是?( )

A: 1
B: 1.0
C: ‘1’
D: 传入参数错误,不能执行

答案:B

float() 函数用于将一个字符串或数字转换为浮点数。在这个例子中,字符串 “1” 会被转换为浮点数 1.0。

因此,执行 float(“1”) 会返回浮点数 1.0。

第24题

在交互式编程环境下,输入max([(1,2),(2,3),(3,4),(2,6)])语句,执行的结果是?( )

A: 6
B: (3, 4)
C: (2,6)
D: (3,6)

答案:B

max() 函数用于返回给定可迭代对象中的最大值。在这个例子中,给定的可迭代对象是一个包含元组的列表。

元组 (1, 2), (2, 3), (3, 4), (2, 6) 中的每个元组都由两个整数组成。max() 函数会比较元组中的第一个元素,如果相等,则比较第二个元素。

在给定的列表中,(3, 4) 是最大的元组,因为它的第一个元素 3 最大。所以,max([(1,2),(2,3),(3,4),(2,6)]) 的结果是 (3, 4)。

第25题

“鸡兔同笼”是一个古老的数学问题,可以应用枚举法求解,也可以利用二元一次方程进行求解。以下是使用计算机解决“鸡兔同笼”问题的几个步骤:
①编写Python程序,用计算机进行处理。
②设计“鸡兔同笼”求解算法。
③验证算法的功能和性能。
④分析问题,确定解题任务。
使用计算机解决“鸡兔同笼”问题,正确的步骤是?( )

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

答案:D

使用计算机解决问题的一般过程是分析问题、设计算法、编写程序、验证算法等。

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

第26题

若name为若干元素的列表对象,file为CSV文件,则file.write(‘,’.join(name)+’\n’)语句可确保列表中每个写入CSV文件的数据,在表格软件打开时作为一个单元格存在。( )

答案:正确

列表中的数据元素以‘,’合并成字符串,最后在末位加换行符。

第27题

当程序发生异常时,我们可以用try…except…语句进行异常处理。但每个try模块只能有一个except语句块。( )

答案:错误

一个try语句模块可以设定多个except语句模块。

第28题

float()函数可将整数转换为浮点类型数据,但不能将字符串中的数字转换为浮点类型数据。( )

答案:错误

内建函数float()用于将整数和字符串数字转换为浮点数。

第29题

在执行语句x=input()的过程中,若键盘输入23并按下回车键,则x的值就被赋值为整数23。( )

答案:错误

input()用于接收键盘输入数据,默认为字符串类型,即键盘输入数字23,最终得到的是字符串“23”,若要得到整数23,需用int()进行转换。

第30题

input()用于接收键盘输入数据,默认为字符串类型,即键盘输入数字23,最终得到的是字符串“23”,若要得到整数23,需用int()进行转换。

答案:错误

bin() 返回一个整数或者长整数的二进制表示。

第31题

任何二维数据都可以用二维列表来表示。( )

答案:正确

二维列表是一种嵌套的列表结构,其中每个元素都是一个列表,形成了一个类似于网格的结构。通过使用行和列的索引,可以访问和操作二维列表中的元素。这使得二维列表成为表示二维数据的一种常见方式。无论是矩阵、图像、地图还是其他类型的二维数据,都可以使用二维列表来表示。

第32题

执行语句wq=[[0]*19]*19可以创建一个19行及19列的二维表。( )

答案:正确

这种方法使用了列表复制的特性,通过将一个包含19个0的列表复制19次来创建一个包含19行的二维列表。每一行都是对同一个列表对象的引用,因此任何对其中一个元素的修改都会在整个列表中反映出来。

第33题

bool()函数用于将给定参数或表达式转换为布尔类型。语句bool(-1)返回的是False值。( )

答案:错误

在Python中,bool()函数用于将给定参数或表达式转换为布尔类型。根据Python的布尔类型规则,以下值被视为False:

  • False(布尔值)

  • None(空值)

  • 0(整数中的零)

  • 0.0(浮点数中的零)

  • 空的序列(例如,空字符串、空列表、空元组)

  • 空的映射(例如,空字典)

除了上述值之外的所有其他值都被视为True。

当我们使用bool()函数将一个值转换为布尔类型时,非零的整数值(包括负数)会被视为True,而不是False。所以,语句bool(-1)返回的是True,而不是False。

第34题

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

答案:正确

enumerate()函数是Python中的一个内置函数,用于将可遍历的数据对象(如列表、元组、字符串等)组合为一个索引序列,返回一个枚举对象。每个元素都是一个包含索引和对应值的元组。

具体用法是在enumerate()函数中传入一个可遍历的对象作为参数,然后可以使用for循环或其他迭代方式遍历枚举对象,获取每个元素的索引和值。

第35题

十六进制9E的二进制数是8位。( )

答案:正确

十六进制转二进制,每1位十六进制数转换为4位二进制数,高位最左边的0可省略。E->1110,9->1001.共8位。

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

第36题

百钱买百鸡是我国古代数学家张丘建在《算经》一书中提出的数学问题,问题的原文是:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?这个问题用现代文描述起来就是:公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱。如果用100文钱买100只鸡,那么公鸡、母鸡和小鸡各应该买多少只呢?请完成下面程序中空白处的语句,实现对问题的求解,找出所有符合题目要求的买鸡方案,并输出。
#设cock、hen、chicken分别为公鸡、母鸡和小鸡的数量,num为符合题目要求的方案数目。

num=0
for cock in range(1,21):for hen in range(1,34):for chicken in        ①        :  if         ②        == 100 and cock*5 + hen*3 + chicken/3 ==        ③        :num =        ④        print(f'第 {num} 种方案是:公鸡{cock}只,母鸡{hen}只,小鸡{chicken}只')

答案:

num = 0
for cock in range(1, 21):for hen in range(1, 34):for chicken in range(1, 101):if cock + hen + chicken == 100 and cock * 5 + hen * 3 + chicken / 3 == 100:num = num + 1print(f'第 {num} 种方案是:公鸡{cock}只,母鸡{hen}只,小鸡{chicken}只')

这段代码使用三重循环来遍历所有可能的公鸡、母鸡和小鸡的数量。在每次迭代中,我们计算小鸡的数量,然后检查是否满足总数量为100、总价值为100文钱的条件。如果符合条件,我们增加方案数目,并输出当前方案的详细信息。

第37题

妙妙学校举行了知识竞赛,有一、二、三3个班分别派出最优秀的5名代表参加此次竞赛。这15名代表的成绩存放于”jscj.csv”文件中,现在妙妙读取了其中的数据,数据内容如图所示:

下列代码实现了读取竞赛分数信息,并输出各班平均分的情况,请你补全代码。

import csv
with open("/data/jscj.csv",encoding="utf-8")as f:rows=list(        ①         (f))sum=[0,0,0]for row in rows[1:]:if int(row[0])==1:sum[0]+=int(row[2])elif int(        ②         )==2:sum[1]+=int(row[2])else:sum[2]+=int(row[2])for i in range(1,4):print(str(i)+"班的平均分为:",round(        ③         /5,2))

答案:

import csv
with open("/data/jscj.csv", encoding="utf-8") as f:rows = list(csv.reader(f))sum = [0, 0, 0]for row in rows[1:]:if int(row[0]) == 1:sum[0] += int(row[2])elif int(row[0]) == 2:sum[1] += int(row[2])else:sum[2] += int(row[2])for i in range(1, 4):print(str(i) + "班的平均分为:", round(sum[i-1] / 5, 2))

代码中的修改如下:

csv.reader(f):使用csv.reader函数读取CSV文件的内容,并将其转换为列表形式。

row[1]:将班级信息从row[0]改为row[1],因为在数据文件中,班级信息位于第二列。

sum[i-1]:计算平均分时,使用sum[i-1]表示第i班的总分,然后除以5得到平均分。

这样,代码将能够正确读取竞赛分数信息,计算各班的平均分并输出。注意,为了正确运行代码,请确保jscj.csv文件位于正确的路径下,并且文件编码为UTF-8。

第38题

若要生成一个由若干小写字母组成的互不重复的随机数组,已知小写字母的ASCII码值为97~122整数范围,并将其进行从小到大输出,如图所示,请将相关程序补充完整。

import random  #random是随机数模块
n=int(input("请输入元素个数(不超过26):"))
a=[]
#产生不重复的随机数组
for i in range(n):x=random.randint(97,122)  #产生97-122之间的随机整数while chr(x) in a:x=random.randint(97,122)a.append(        ①         )
print(a)
#将各个元素进行排序输出
for i in range(n-1):k=ifor j in range(        ②         ,n):if a[k]>a[j]:k=        ③         if i!=k:a[i],a[k]=        ④         
print("该随机数组从小到大排列为:",a)

答案:

import random
n = int(input("请输入元素个数(不超过26):"))
a = []
# 产生不重复的随机数组
for i in range(n):x = random.randint(97, 122)  # 产生97-122之间的随机整数while chr(x) in a:x = random.randint(97, 122)a.append(chr(x))
print(a)
# 将各个元素进行排序输出
for i in range(n-1):k = ifor j in range(i+1, n):if a[k] > a[j]:k = jif i != k:a[i], a[k] = a[k], a[i]
print("该随机数组从小到大排列为:", a)

代码中的修改如下:

a.append(chr(x)):将生成的随机整数转换为对应的小写字母,并添加到数组a中。

range(i+1, n):在第二个循环中,j的范围应该是i+1n,以确保比较的是当前元素后面的元素。

k = j:在内层循环中,如果发现有更小的元素,则更新k的值为更小元素的索引。

a[i], a[k] = a[k], a[i]:利用Python的特性进行元素交换,将最小的元素放到正确的位置上。

这样,代码将能够生成由若干小写字母组成的互不重复的随机数组,并将其按从小到大的顺序进行输出。请注意,输入的元素个数n不能超过26,因为小写字母的个数有限。

更多推荐

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

本文发布于:2023-11-16 13:22:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1623445.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中国电子   等级考试   真题   全国青少年   软件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!