【电子学会】2023年03月Python三级试卷

2023-12-05

青少年软件编程(Python)等级考试试卷(三级)

分数:100 题数:38

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

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
D C A B D D A C A B C C D C C
16 17 18 19 20 21 22 23 24 25
C D A C A D B B B D

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 / b
    print("商是:", 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
  • 试题难度:容易
  • 试题解析:sum()函数表示求和,因此1+2+3+4+5=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) // 2
    if a[m] == key:
        break
    elif a[m] > key:
        j = m - 1
    else:
        i = m + 1
    t += 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
  • 试题难度:一般
  • 试题解析:考查将十进制数转换成十六进制数的计算方法。

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

  • A. int()
  • B. int(1.0)
  • C. int(0x20, 16)
  • D. int(‘2023’, 8)
  • 标准答案:C
  • 试题难度:一般
  • 试题解析:int() 函数用于将一个字符串或数字转换为整型,C项缺引号。

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
  • 试题难度:容易
  • 试题解析:len函数用于返回字符串、列表、字典、元组等的长度。

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

  • A. 存在语法错误,不能执行
  • B. [0, 1]
  • C. [0, 1, 2, 3, 4, 5]
  • D. [0, 2, 4]
  • 标准答案:D
  • 试题难度:一般
  • 试题解析:重点考查range()函数的用法。

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

  • A. True
  • B. False
  • C. 1
  • D. 4
  • 标准答案:B
  • 试题难度:一般
  • 试题解析:

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

  • A. 1
  • B. 1.0
  • C. ‘1’
  • D. 传入参数错误,不能执行
  • 标准答案:B
  • 试题难度:容易
  • 试题解析:

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

  • A. 6
  • B. (3, 4)
  • C. (2, 6)
  • D. (3, 6)
  • 标准答案:B
  • 试题难度:一般
  • 试题解析:

25、“鸡兔同笼”是一个古老的数学问题,可以应用枚举法求解,也可以利用二元一次方程进行求解。以下是使用计算机解决“鸡兔同笼”问题的几个步骤:

①编写Python程序,用计算机进行处理。

②设计“鸡兔同笼”求解算法。

③验证算法的功能和性能。

④分析问题,确定解题任务。

使用计算机解决“鸡兔同笼”问题,正确的步骤是?( )

  • A. ②④①③
  • B. ④①②③
  • C. ④②③①
  • D. ④②①③
  • 标准答案:D
  • 试题难度:容易
  • 试题解析:使用计算机解决问题的一般过程是分析问题、设计算法、编写程序、验证算法等。

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

26 27 28 29 30 31 32 33 34 35
× × × × ×

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、Python语言中, bin() 函数可以输出二进制数值,也可以传入参数用来设置输出为十六进制数值。( )

  • 正确();
  • 错误();
  • 标准答案:×
  • 试题难度:易
  • 试题解析:bin() 返回一个整数或者长整数的二进制表示。

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

  • 正确();
  • 错误();
  • 标准答案:√
  • 试题难度:易
  • 试题解析:二维数据可以用二维列表来表示。

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

  • 正确();
  • 错误();
  • 标准答案:√
  • 试题难度:一般
  • 试题解析:执行 [[0]*19]*19 将创建19行X19列的空二维表。

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

  • 正确();
  • 错误();
  • 标准答案:×
  • 试题难度:一般
  • 试题解析:

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

  • 正确();
  • 错误();
  • 标准答案:√
  • 试题难度:一般
  • 试题解析:

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(3, 100, 3): # ①
            if cock + hen + chicken == 100 and cock * 5 + hen * 3 + chicken / 3 == 100: # ② ③
                num = num + 1 # ④
                print(f'第 {num} 种方案是:公鸡{cock}只,母鸡{hen}只,小鸡{chicken}只')

试题难度:易

评分标准:

range(1, 101) 或等效答案;(3分)

cock + hen + chicken 或等效答案;(3分)

100 或等效答案;(2分)

num +1 或等效答案。(2分)

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对象读取文件内容;第二空属于分支结构的第二个分支,由第一个分支可知这里为讨论班级是否是2班,因此仍然是读取row[0]的数据;第三空是计算每个班的平均分,班级和循环变量i有关,sum中对应班级的索引和循环变量i相差1,故为sum[i-1]。

csv.reader ;(1分)

row[0] ;(1分)

sum[i-1] 。(2分)

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 = i
    for j in range(____②____, n):
        if a[k] > a[j]:
            k = ____③____
    if i != k:
        a[i], a[k] = ____④____ 
print("该随机数组从小到大排列为:", a)

参考程序:

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(chr(x))  # ①

print(a)
# 将各个元素进行排序输出
for i in range(n - 1):
    k = i
    for j in range(i + 1, n):  # ②
        if a[k] > a[j]:
            k = j  # ③
    if i != k:
        a[i], a[k] = a[k], a[i]  # ④

print("该随机数组从小到大排列为:", a)

本题主要考查选择排序。程序的第一部分是产生不重复的字母组成的数组。由于x是 97~122 中的随机整数,故追加到a列表中的元素应在x的基础上将其转化为字符,故①空填写chr(x);在选择排序中,外循环控制排序趟数,内循环控制排序次数,不难看出,i的取值范围为0~n-2,因此j每次从i的下一个位置开始至最后,故②处填写i+1;根据选择排序的原理,在j位置上找到比k位置更小的元素,则k移至该位置,故③处填写为j;在某趟排序过程中,当全部元素比较结束,应在最小元素位置上,需要将其交换到相应的i位置上,故④位置答案应为a[k],a[i]。

试题难度:

评分标准:

chr(x) ;(4分)
i+1 ;(4分)
j ;(4分)
a[k],a[i] 。(4分)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【电子学会】2023年03月Python三级试卷 的相关文章

随机推荐