【电子学会】2023年09月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
C A B D A D B B D C B C B B C
16 17 18 19 20 21 22 23 24 25
A B D A B C C B B C

1、有一组数据存在列表中,things = [“桌子”, “椅子”, “茶几”, “沙发”, “西瓜”, “苹果”, “草莓”, “香蕉”],若想要输出其中的水果数据,则下列处理恰当的是?( )

  • A. print(things)
  • B. print(things[:4])
  • C. print(things[4:])
  • D. print(things[5:8])
  • 标准答案:C
  • 试题难度:容易
  • 试题解析:本题考查一维数组中取出部分数据。things为列表实现的一维数组,水果部分数据在列表中位于索引位4号至7号(末位),故可用列表切片取出数组的水果部分数据。

2、学期末学校进行了体育测试,其中跳绳项目每人有三次机会,取最好的成绩为最后得分。小贝、小李和小司三人的成绩数据如下:tscores = [[“小贝”, 132, 126, 130], [“小李”, 117, 120, 123], [“小司”, 129, 140, 137]],那么要得到小贝的第二次成绩,下列操作正确的是?( )

  • A. tscores[0][2]
  • B. tscores[1][1]
  • C. tscores[0[2]]
  • D. tscores[1[1]]
  • 标准答案:A
  • 试题难度:一般
  • 试题解析:本题考查二维数组中数据获取。二维数组中行和列的数据索引都是从0开始,该二维数组中小贝的第二次成绩,位于第一行第三列,故行索引为0,列索引为2,tscores[0],取出第一行,tscores[0][2]可取出第一行第三列数据,故选A。

3、小贝、小李和小司三人三次跳绳的成绩数据如下:tscores = [[“小贝”, 132, 126, 130], [“小李”, 117, 120, 123], [“小司”, 129, 140, 137]],若要输出小李同学的最好成绩,则正确的处理方式是?( )

  • A. max(tscores[1])
  • B. max(tscores[1][1:])
  • C. tscores[1].max()
  • D. tscores[1][1:].max()
  • 标准答案:B
  • 试题难度:一般
  • 试题解析:小李同学的成绩位于数组中第二行,行索引为1,由于每一行数据有字符串也有数据,故不能直接求最大值,观察选项,可通过对成绩部分选项先切片取出,再求最大值,结合列表的函数用法可得B为正确选项。

4、有如下代码:

gs = ['众鸟高飞尽', '孤云独去闲', '相看两不厌', '只有敬亭山']
f = open('jts.txt', 'w')
f.write(','.join(gs) + '\n')
f.close()

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

  • A. 在执行代码前,必须要先新建一个"jts.txt"的文件
  • B. 在文件"jts.txt"中,所有相邻诗句之间将发生换行
  • C. f.write(‘,’.join(gs)+‘\n’)也可以用f.write(‘\n’.join(gs)+‘,’)替换,显示结果是相同的
  • D. 该段代码的主要功能是将列表gs中的四句古诗写入到"jts.txt"文件中,诗句之间以逗号连成一行
  • 标准答案:D
  • 试题难度:一般
  • 试题解析:本题考查一维数据存储。若“jts.txt”不存在,则将自动产生一个;否则操作结果将覆盖原文件。A错。由第三行代码知道,gs列表中元素以’,‘相连接,最后才换行,故B错;f.write(‘,’.join(gs)+’\n’)的功能是诗句相连后换行,f.write(‘\n’.join(gs)+’,’)的功能是每输出一句诗进行换行,最后一句以’,'结尾。结果并不相同。C错。

5、有关于简单文件的读写,下列说法正确的是?( )

  • A. 可以用Python内置的open()函数打开文件
  • B. 对文件进行读取操作,我们可以用write()函数
  • C. 对文件进行写入操作,我们可以用close()函数
  • D. 关闭文件可以用read()函数
  • 标准答案:A
  • 试题难度:容易
  • 试题解析:文件打开用open()函数,文件内容读取用read()函数,文件写入用write()函数,文件关闭用close()函数实现。

6、运行函数 hex(?) 之后,得到结果是’0xa’,请问括号中?号处应填?( )

  • A. “9”
  • B. 9
  • C. “10”
  • D. 10
  • 标准答案:D
  • 试题难度:容易
  • 试题解析:hex() 函数用于将10进制整数转换成16进制。本题中答案为十进制数10,不能加引号。

7、十六进制数100,对应的十进制数是?( )

  • A. 128
  • B. 256
  • C. 28
  • D. 56
  • 标准答案:B
  • 试题难度:容易
  • 试题解析:考查学生将十六进制数转为十进制数。本质上就是int(‘100’,16),答案为256。

8、int()函数可以将非十进制数或数字字符串转换为十进制数,以下关于int()函数的使用,正确的是?( )

  • A. int(“0b1010”, 10)
  • B. int(“1010”, 10)
  • C. int(“0o50”, 10)
  • D. int(“80”, 8)
  • 标准答案:B
  • 试题难度:一般
  • 试题解析:本题考查学生对其它进制数转十进制数的掌握,正确答案选B 。A、0b与10矛盾;C、0o与10矛盾;D、八进制没有基数“8”。

9、下列4个表达式中,答案不是整数6的是?( )

  • A. abs(-6)
  • B. int(6.88)
  • C. round(5.55)
  • D. min(float(6), 9, 8, 7)
  • 标准答案:D
  • 试题难度:一般
  • 试题解析:考查学生对内置数值处理函数的理解。abs()是取绝对值,int()默认会取整,round()四舍五入,float()会把整数转为浮点数,min()获取列表中的最小值,所以,上列4个表达式,只有选项D的答案是浮点数6.0,不是整数6。

10、键盘输入“杭州亚运会即将于2023年9月23日至10月8日举办。”,以下代码的输出结果是?( )

try:
    n = input("请输入文字:")
    x = n.count("2")
    print(x)
except:
    print("程序执行错误")
  • A. 程序执行错误
  • B. 2
  • C. 3
  • D. 15
  • 标准答案:C
  • 试题难度:一般
  • 试题解析:count() 方法用于统计字符串里某个字符或子字符串出现的次数。程序是统计输入一段文字中“2”出现的次数,所以执行结果为3。程序正常运行后,不再执行except后的语句。

11、初学者常采用异常处理解决程序中出现的意外情况,下面语句的执行结果是?( )

try:
    s1 = '我爱中国'
    s2 = 2023
    s = s1 + s2
    print(s)
except:
    print('错误')
finally:
    print('程序结束')

  • A.
我爱中国2023
程序结束
  • B.
错误
程序结束
  • C. 我爱中国2023
  • D. 错误
  • 标准答案:B
  • 试题难度:一般
  • 试题解析:s1 = ‘我爱中国’ 是字符串型;s2 = 2023 是整型;s = s1 + s2不能直接相加,程序运行会报错。因此会执行except语句,错误;无论是否报错,程序都会执行finally,所以最终运行结果为B。

12、列表中有6个数据,使用冒泡排序算法进行从小到大排序,最多需要处理几遍?( )

  • A. 3
  • B. 4
  • C. 5
  • D. 6
  • 标准答案:C
  • 试题难度:一般
  • 试题解析:n个数据的冒泡排序,需要进行n-1遍排序。

13、对一组数据 [5, 2, 6, 4, 8, 1, 7, 3] 进行排序,使用冒泡排序按从大到小的顺序进行排列,则第2轮排序过后的结果是?( )

  • A. 2, 4, 5, 1, 6, 3, 7, 8
  • B. 6, 5, 8, 4, 7, 3, 2, 1
  • C. 5, 6, 4, 8, 2, 7, 3, 1
  • D. 5, 6, 4, 8, 7, 3, 2, 1
  • 标准答案:B
  • 试题难度:一般
  • 试题解析:A选项最后一个元素是8,是最大的,排除。C选项是第1轮排序的结果,排除。正确答案是B。

14、想要找出小于100的所有质数,适用的算法是?( )

  • A. 解析算法
  • B. 枚举算法
  • C. 对分查找
  • D. 选择排序
  • 标准答案:B
  • 试题难度:一般
  • 试题解析:小于100的质数有若干个,想要全部找出来,需要使用一一列举的方法。

15、运行下面的程序,结果是?( )

h = [-2, -1, 0, 1, 2, 3]
n = len(h)
s = 0
for i in range(n):
    s = s + bool(h[i])
print(s)
  • A. 0
  • B. 1
  • C. 5
  • D. 6
  • 标准答案:C
  • 试题难度:容易
  • 试题解析:考核列表、循环、累加器、bool()函数

16、关于Python中 abs() 函数,描述不正确的是?( )

  • A. abs()函数的功能是取一个整数的绝对值
  • B. abs(0)的运行结果是0
  • C. abs(3.0)的运行结果是3.0
  • D. abs(-3)的运行结果是3
  • 标准答案:A
  • 试题难度:容易
  • 试题解析:abs()函数的功能是取一个数的绝对值,不一定是整数。

17、print(divmod(29, 7)) 的运行结果是?( )

  • A. 4, 1
  • B. (4, 1)
  • C. 1, 4
  • D. (1, 4)
  • 标准答案:B
  • 试题难度:容易
  • 试题解析:divmod()函数的结果是由商与余数组成的元组。

18、下列程序运行结果是 False 的是?( )

  • A. print(all([‘1’, ‘2’, ‘3’]))
  • B. print(all(()))
  • C. print(all((‘1’, ‘2’, ‘3’, ‘4’, ‘5’)))
  • D. print(all([‘1’, ‘2’, ‘3’, ‘’]))
  • 标准答案:D
  • 试题难度:容易
  • 试题解析:考核 all()函数

19、下列程序运行的结果是?( )

h = [2, -3, -5, -6, 0, -1, 4, 9]
y = list(filter(None, h))
print(y)
  • A. [2, -3, -5, -6, -1, 4, 9]
  • B. (2, -3, -5, -6, -1, 4, 9)
  • C. [2, 4, 9]
  • D. (2, 4, 9)
  • 标准答案:A
  • 试题难度:一般
  • 试题解析:考核 filter()函数

20、关于 open() 函数的参数,下列描述不正确的是?( )

  • A. 'r’以只读方式打开文件,如果文件不存在,则会提示错误
  • B. 'w’以写入的方式打开文件,如果文件不存在,则会提示错误
  • C. 'a’打开文件,并将新内容写入到已有内容之后
  • D. 'r+'以读、写方式打开文件
  • 标准答案:B
  • 试题难度:容易
  • 试题解析:'w’以写入的方式打开文件,如果文件不存在,则会创建文件。

21、Python语句 print(ascii(‘A’)+ascii(‘Z’)) 运行的结果是?( )

  • A. ‘A’+‘Z’
  • B. ‘AZ’
  • C. ‘A’‘Z’
  • D. “AZ”
  • 标准答案:C
  • 试题难度:
  • 试题解析:ascii(‘A’)的结果为字符串’A’,即”‘A’”;ascii(‘z’)的结果为字符串’z’,即”‘z’”;两个字符串相加的结果为’A’‘Z’,即”‘A’‘Z’”,执行print()得:‘A’‘Z’。

22、执行 print(‘{:.1f}’.format(23.792)) 返回的结果是?( )

  • A. 23
  • B. 23.0
  • C. 23.8
  • D. 23.792
  • 标准答案:C
  • 试题难度:容易
  • 试题解析:考核 format()函数

23、以下表达式的值为True的是?( )

  • A. bool([])
  • B. bool(“0”)
  • C. bool(None)
  • D. bool(range(0))
  • 标准答案:B
  • 试题难度:容易
  • 试题解析:bool(“0”),"0"是一个字符串,有内容。

24、下面程序运行的结果是?( )

a = 'hello python'
print(a, end='_')
print(a, end="")
print(a)
  • A.
hello python_

hello pythonhello python
  • B. hello python_hello pythonhello python
  • C. hello python_hello python hello python
  • D. hello python_hellopythonhellopython
  • 标准答案:B
  • 试题难度:较难
  • 试题解析:考核print()函数不换行和换行输出。

25、小明运行下面的程序,运行结果正确的是?( )

h = [6, 15, 1, 0, 7, 9, 5]
p = sorted(h)
print(p)
  • A. (0, 1, 5, 6, 7, 9, 15)
  • B. (15, 9, 7, 6, 5, 1, 0)
  • C. [0, 1, 5, 6, 7, 9, 15]
  • D. [15, 9, 7, 6, 5, 1, 0]
  • 标准答案:C
  • 试题难度:一般
  • 试题解析:sorted()函数返回列表,赋值给p,是一个升序列表。

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

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

26、在计算机中,每个二进制位都可以表示为 0 或 1 两个值。( )

  • 正确();
  • 错误();
  • 标准答案:√
  • 试题难度:一般
  • 试题解析:二进制数的表示。

27、有这样一个表达式:

ord('a') - ord('A') 

这个表达式运行的结果是整数 32 ,请判断结果对吗?( )

  • 正确();
  • 错误();
  • 标准答案:√
  • 试题难度:一般
  • 试题解析:考查学生对ord()函数的理解。ord()函数的返回值为整数,字符 ‘a’ 与 ‘A’ 之间的差,为整数32,所以本题答案是正确的。

28、对文件操作需要先打开文件,打开文件的模式只有’r’和’w’,即只读和只写。( )

  • 正确();
  • 错误();
  • 标准答案:×
  • 试题难度:容易
  • 试题解析:打开文件的模式基础有’r’、‘w’、‘a’,表示只读、只写、追加。

29、有如下函数:

with open("english.txt", 'r') as f:
    list1 = f.readlines()
print(list1)

这段函数的功能是自动将"english.txt"文件中的内容获取成一个行的列表并输出。( )

  • 正确();
  • 错误();
  • 标准答案:√
  • 试题难度:一般
  • 试题解析:readlines()一次读取整个文件,并自动将文件内容获取成行的列表。

30、关于语句 f = open(‘d:/a.txt’, ‘r’),如果文件a.txt不存在,不会报错。( )

  • 正确();
  • 错误();
  • 标准答案:×
  • 试题难度:一般
  • 试题解析:'r’为只读模式,如果要读取的文件不存在,会报错。

31、键盘输入整数8,以下代码的运行结果是4.0。( )

try:
    n = input('请输入一个整数:')
    n = n / 2
    print(n)
except:
    print('程序执行错误')
  • 正确();
  • 错误();
  • 标准答案:×
  • 试题难度:较难
  • 试题解析:由于题目中缺少把字符串转换为整数的int(),所以执行except语句,程序执行错误。

32、已知字符"0"的ASCII码为48,字符"A"的ASCII码为65,下面程序的运行结果是:65。

c = 'A'
n = 48
print(ord(c) + chr(n))
  • 正确();
  • 错误();
  • 标准答案:×
  • 试题难度:一般
  • 试题解析:考核ord()、chr()函数,本题整数与字符串无法相加,运行出错。

33、命令 any((‘1’, ‘’, ‘2’, ‘3’)) 返回的结果是 False。( )

  • 正确();
  • 错误();
  • 标准答案:×
  • 试题难度:容易
  • 试题解析:考核 any()函数

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

  • 正确();
  • 错误();
  • 标准答案:√
  • 试题难度:容易
  • 试题解析:考核 help()函数。

35、下列程序的运行结果是 11。( )

a = max(2, 4, 1, 8, 9)
b = min("3", "8", "9", "2", "10")
print(a + int(b))
  • 正确();
  • 错误();
  • 标准答案:×
  • 试题难度:较难
  • 试题解析:正确答案是19,考核 max()、min()。

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

36、

下面代码,在字典a中查找身高为137的人,请将代码中缺失部分补充完整。

a = {'小赵': 136, '小钱': 141, '小孙': 146, '小李': 138, 
     '小周': 142, '小吴': 134, '小郑': 137, '小王': 143}
keys = a.keys()
b = 0  # 用于判断查找是否成功
for key in keys:
    value = a[_____①_____]
    if _____②_____ == 137:
        print('找到身高为137的人是:', key)
        b = b + 1  # 有找到的人
        _____③_____  # 退出循环
if b == 0:
    print('本次查找,未找到有身高为137的同学。')

参考程序:

a = {'小赵': 136, '小钱': 141, '小孙': 146, '小李': 138, 
     '小周': 142, '小吴': 134, '小郑': 137, '小王': 143}
keys = a.keys()
b = 0  # 用于判断查找是否成功
for key in keys:
    value = a[key] # ①
    if value == 137: # ②
        print('找到身高为137的人是:', key)
        b = b + 1  # 有找到的人
        break  # 退出循环 ③
if b == 0:
    print('本次查找,未找到有身高为137的同学。')

试题难度:一般

评分标准:

(1)key;(3分)

(2)value或者int(value)或者a[key]或者int(a[key]);(4分)

(3)break。(3分)

37、

张老师手上有一份学生成绩单(cj.txt),成绩单上只有每位学生的各科成绩,而张老师希望能看到各科成绩的所有学生的平均分,以下代码可以实现平均分的计算,并按示例格式排版,请补充代码。

with open(r'.\data\cj.txt', _____①_____) as f:
    string = f.read()
    data = string.split('\n')
    data.pop(0)
    lis = []
    for i in data:
        new = i.split('\t')
        lis.append(new)  # 将分割得到的列表追加到空列表中,lis 为二维

    lis1 = ['平均分']
    for i in range(1, 4):  # 循环3次,因为需要计算3个科目的平均分
        sum_ = _____②_____
        average = round(sum_ / 3)
        lis1.append(str(average))
    s = "\t".join(lis1)
    res = string + s

with open('cj1.txt', 'w') as f:
    f.write(res)

参考程序:

with open(r'.\data\cj.txt', 'r') as f: # ①
    string = f.read()
    data = string.split('\n')
    data.pop(0)
    lis = []
    for i in data:
        new = i.split('\t')
        lis.append(new)  # 将分割得到的列表追加到空列表中,lis 为二维

    lis1 = ['平均分']
    for i in range(1, 4):  # 循环3次,因为需要计算3个科目的平均分
        sum_ = int(lis[0][i]) + int(lis[1][i]) + int(lis[2][i]) # ②
        average = round(sum_ / 3)
        lis1.append(str(average))
    s = "\t".join(lis1)
    res = string + s

with open('cj1.txt', 'w') as f:
    f.write(res)

试题难度:一般

评分标准:

(1)‘r’;(2分)

(2)int(lis[0][i]) + int(lis[1][i]) + int(lis[2][i])。(2分)(没有int给1分)

38、

工厂有一台检测设备用于检测器件,各个器件在不完全相同时刻送达,且检测时长各有不同。现在要按器件的送达时间(若送达时间相同则按检测时长)进行排序后再送检,送达时间和检测时间都是按升序排序。已知各个器件原始信息存在列表qj中:qj = [[2, 1], [1, 3], [0, 2], [4, 3], [12, 4], [10, 1], [4, 1]],其中器件信息[2, 1]表示器件送达时间是2,检测时长是1,其他器件信息类推。

现在编写Python程序对各个器件进行排序,并重新输出。排序后的器件列表如下,请你在划线处完善程序:

qj = [[2, 1], [1, 3], [0, 2], [4, 3], [12, 4], [10, 1], [4, 1]]

for i in range(len(qj) - 1):
    for j in range(0, _____①_____):
        if _____②_____ or (qj[j][0] == qj[j + 1][0] and _____③_____):
            qj[j], qj[j + 1] = qj[j + 1], qj[j]
print(_____④_____)

参考答案:

qj = [[2, 1], [1, 3], [0, 2], [4, 3], [12, 4], [10, 1], [4, 1]]

for i in range(len(qj) - 1):
    for j in range(0, len(qj) - 1 - i):
        if qj[j][0] > qj[j + 1][0] or (qj[j][0] == qj[j + 1][0] and qj[j][1] > qj[j + 1][1]):
            qj[j], qj[j + 1] = qj[j + 1], qj[j]
print(qj)

①本题考查的是对二维列表进行冒泡排序。外循环控制排序趟数,内循环控制排序比较的次数以及比较的起止位。外循环变量i从0开始,内循环变量j从0开始,显然终值是len(qj)-1-i,比较过程从前往后两两相比。因此①处填写的步长应为len(qj)-1-i;

②根据题目意思,比较依据先是送达时间(从小到大),若相同则比较检测时长,因此②处表达的应该是相邻两个器件的送达时间相比,从交换语句来看第j项被交换至j+1项,从而判定②处答案为qj[j][0]>qj[j+1][0];

③qj[j][0]表示送达时间,qj[j][1]则表示的是检测时长,从qj[j][0]==qj[j+1][0]可知此处表示送达时间相同的情况下满足何种条件第j项会和第j-1项交换,显然要比的是检测时间,故而③处填写qj[j][1]>qj[j+1][1]。

④根据题意,最后需要输出排序后的器件列表,因此④处填写的器件列表名称qj。

试题难度:较难

评分标准:

(1)len(qj)-1-i;(4分)

(2)qj[j][0]>qj[j+1][0];(4分)

(3)qj[j][1]>qj[j+1][1];(4分)

(4)qj。(4分)

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

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

随机推荐