真题与解析 202406三级 青少年软件编程(Python)考级

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

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

202406真题与解析

分数:100  题数:37  测试时长:60分钟

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

1.现有一组初始记录无序的数据“5,8,6,3,9,2”,使用冒泡排序算法,按从小到大的顺序排列,第一轮排序的结果为?( )

A. 5,6,3,8,9,2

B. 5,6,3,8,2,9

C. 5,6,8,3,2,9

D. 5,8,3,6,9,2

2. 列表l=[9,2,8,6,3,4],采用选择排序进行升序排序,第二轮排序后的结果是?( )

A. 2,3,4,6,8,9

B. 2,3,4,6,9,8

C. 2,3,8,6,4,9

D. 2,3,8,6,9,4

3. 经典的韩信点兵问题出自《孙子算经》,译文为:有一些不清楚数量的物品,如果三个为一组的数剩下两个,如果五个为一组的数剩下三个,如果七个为一组的数剩下两个,问这些物品共有多少个。解决此问题可以用哪种算法?( )

A. 解析算法

B. 枚举算法

C. 排序算法

D. 查找算法

4. 运行下列程序段:

try:

    a=6

    b = int(input('输入一个数'))

    m=a/b

    print('商是:',m)

except:

    print('输入错误!')

else:

    print('正确!')

finally:

    print('程序结束!')

下面说法正确的是?( )

A. 当输入0时程序出错无法运行

B. 当输入1时,输出结果为:商是:6

C. 当输入6时,输出结果为:商是:1.0 正确!

D. 不管输入什么内容都会输出:程序结束!

5. Python的异常处理try....except...else...finally机制中,以下表述哪项是错误的?( )

A. 当碰到错误语句时,try代码块的剩余代码将会被忽略,执行except语句块

B. 当try语句块正确时,try代码块执行完毕,不执行else语句块,执行finally语句

C. 不管try代码块正确与否,finally代码都要执行

D. except程序段中语句可能会被执行,也可能不会被执行

6. 十进制数25,转化为二进制数为?( )

A. 10011

B. 11001

C. 11000

D. 11011

7. 八进制数30,转化为十进制数为?( )

A. 24

B. 30

C. 64

D. 192

8. 十进制数90,转化为十六进制数为?( )

A. 50

B. 1A

C. A5

D. 5A

9. 下面转化结果与十六进制数3C不相等的是?( )

A. 十进制数60

B. 八进制数74

C. 二进制数111110

D. hex(60)

10. 用python存储某餐馆菜单信息如下:

menu=['花雕醉湖蟹','三鲜汤','西湖醋鱼','酸辣土豆丝']

price=[78,36,118,28]

for i in range(len(menu)):

    print(menu[i]+':'+str(price[i]))

关于该段程序,下列说法正确的是?( )

A. menu和price组成了一个二维数组

B. 该段程序一共输出4行结果

C. 若menu和price的元素数量不相同,程序也不受影响

D. 程序中len(menu)改成len(price),其他不变,结果将不一样

11. 有如下程序:

color=['红','橙','黄','绿','青','蓝','紫']

f=open('color.csv','w')

f.write(';'.join(color)+'\n')

f.close()

下列说法正确的是?( )

A. 这段程序没有输出

B. 该列表中的元素是二维数据元素

C. f.close()语句可有可无

D. color.csv的结果内容是:红;橙;黄;绿;青;蓝;紫

12. 已知二维列表gz中存储了某单位部门部分人员的工资数据,如下所示:gz=[['a1','李明',6200],['a2','吴海',5600],['a3','殷小飞',6536]],那么想要查询'殷小飞'的工资情况可使用?( )

A. gz(3)

B. gz[3]

C. gz(2,2)

D. gz[2][2]

13. 有关数据处理,下列说法正确的是?( )

A. 一维数据通常采用列表形式来表示

B. 二维数据只能通过CSV文件进行存储处理

C. 列表不能表示二维数据

D. 存储在列表中的数据,不可以写入到CSV文件中

14. 观察下列程序代码并思考回答:

word=['I','really','like','the','cat','!']

f=open('words.csv','w')

f.write(' '.join(word))

f.close()

有关该段程序,下列说法正确的是?( )

A. 'words.csv'文件需事先创建好,否则open()语句会出错

B. 变量f表示该CSV文件对象

C. 最终f对象中的内容是:I.really.like.the.cat.!

D. 程序的主要目的是写入内容,因此f.close()最好不写

15. 下面代码中,运行结果不等于9,会出错的,是哪项?( )

A. sum([3,2,1],int('3'))

B. sum([3,2,1],max(1,2,3))

C. sum([3,2,1],[3])

D. sum([1,2,3,2,1])

16. 小明想得到整数9除以2的商和余数,所以他写下了表达式: x = divmod(9, 2)

请问,表达式中的 x 是什么类型?( )

A. 浮点数

B. 整数

C. 列表

D. 元组

17. 下面两行代码运行的结果是?( )

x=['a','b','c','d']

print(list(enumerate(x)) )

A. ( {'a','b','c','d'} )

B. [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]

C. ['a','b','c','d']

D. (['a','b','c','d'] )

18. min()函数用于获取参数中的最小值,如果 a = min('654') ,请问下面表达式中,正确的是?( )

A. print(max(chr(a),3,2))

B. print(max(bin(a),3,2))

C. print(max(float(a),3,2))

D. print(max(hex(a),3,2))

19. 小明编写了如下3行代码,请问代码运行后print()打印出的结果是?( )

a = set('大家好我是小明')

b = set('你好我是大明')

print(a & b)

A. {'大', '好', '我', '是', '明'}

B. {'大','家','好','我','是','小','明','你','好','我','是','大','明'}

C. {'家', '小', '你'}

D. {'好', '我', '是', '大', '明', '家', '小', '你'}

20. 如下3行代码,运行之后打印出来的结果是?( )

b = (6,9,2,7,5)

b = sorted(b,reverse=1)

print(b)

A. [2, 5, 6, 7, 9]

B. (2, 5, 6, 7, 9)

C. (9, 7, 6, 5, 2)

D. [9, 7, 6, 5, 2]

21. 执行下面代码:

print(bool(4)+3)

结果应该是?( )

A. 会报错!

B. 6

C. 4

D. 7

22. 小明编写了如下4行代码,请问,代码中两次print()函数打印的结果,是什么状态?( )

a = [9,3,7,5,8,4]

print(sorted(a))

a.sort()

print(a)

A. 第1次print(sorted(a)),a会降序排列;第2次print(a),a也会降序排列。

B. 第1次print(sorted(a)),a会降序排列;第2次print(a),a会升序排列。

C. 第1次print(sorted(a)),a会升序排列;第2次print(a),a也会升序排列。

D. 第1次print(sorted(a)),a会升序排列;第2次print(a),a会降序排列。

23. 有如下两行代码,请问代码运行之后,打印出的结果是?( )

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

print(list(set(a)))

A. [1,2,3,4,3,2,3,4,2,1,4]

B. {[1,2,3,4,3,2,3,4,2,1,4]}

C. {[1,2,3,4]}

D. [1,2,3,4]

24. 下列四个表达式,值最大的选项是?( )

A. round(5.2)

B. pow(1,8)

C. max(2,3,4,5,6)

D. len([2,3,4,5,6])

25. 下面两行代码执行结果是?( )

a = '0123456789'

print(min(a)+max(a))

A. 9

B. 0

C. 09

D. a为字符串,不能获取大小值,代码会报错!

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

26. bin(10)的运行结果是'0b1010';int("1101",2)的运行结果是13。( )

27. oct(10)和hex(10)的结果相等。( )

28. 关于文件的读取,readline()表示每次读取文件的一行,而使用read()和readlines()的结果是相同的。( )

29. 向CSV文件中写入数据时,write()函数只能写入一行,而writelines()可以写入多行。( )

30. 有如下程序代码

import csv

with open ("fruits.csv",'w')as f:

    wrt=csv.writer(f)

    wrt.writerows(['苹果','香蕉','西瓜','哈密瓜','桔子','香梨'])

这段代码中,writerows()实现了向'fruits.csv'进行多行输入。( )

31. 请仔细阅读下面6行代码,请判断,代码运行后打印的结果应该是No,对吗?( )

a = all([1,2,3])

b = any([3,2,1])

if a == b :

    print('Yes')

else:

    print('No')

32. max()函数用于获取参数列表中的最大值,所以表达式

max(['1', '2' , '3'])与表达式max([1, 2, 3])运行结果是相同的。

请判断是否正确?( )

33. 有如下所示6行代码,变量a与变量b都有5个元素。代码中两次print()打印出的结果可能不会一样!请判断对否?( )

a = {'1','2','3','4','5'}

b = ('1','2','3','4','5')

for x in a:

    print(x)

for i in b:

    print(i)

34. 执行:print(any(['小陈', 'False', '小李', 'True'])) 得到的结果是:False 。 请判断是否正确?( )

35. 运行下列程序段时输入"good",则输出结果是:ok 。( )

try:

    x=eval(input())

    print(x)

except NameError:

    print('ok')

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

36. 字母去重排序

在一列表中产生n个大写字母,删除其中重复字母,并按照A到Z顺序排列输出。同时输出删除字母个数。

例如输入 5  随机产生原始字母:[ "D","H","K","E","H"]   输出:去重后字母排序:["D","E","H","K"]  输出:共删除字母个数:1个。

请编写程序实现上述功能,或补全代码。

import random

#导入随机数模块

maxn=int(input("输入生成大写字母个数"))

a=[ ]

for i in range(maxn):

    c=random.randint(1,26)#随机产生1-26之间的整数

    numb=chr(64+c)

             ①        

print("随机产生原始字母:",a)

m,n=0,maxn

while m<n:

    i=n-1

    while        ②        :

        i=i-1

    if i==m:

                ③         

    else:

        a.remove(a[i])

        n=n-1

for i in range(n):

    for j in range(len(a)-1,i,-1):

        if a[j]<a[j-1]:

                    ④        

print("去重后字母排序:",a)

print("共删除字母个数:",        ⑤        ,"个")

37. 植树问题

如下图所示,在“植树.csv”中记录着2个班级多次植树的信息(第一列为班级名,第二列为本次植树的数量),输出每个班级植树的总数,请你补全代码。

import csv

with open("/data/植树.csv") as f:

    h=list(        ①        )

s1=0

s2=0

for i in range(len(h)):

    if int(h[i][0])==1:

        s1=s1+int(h[i][1])

    if int(h[i][0])==2:

        s2=s2+        ②        

print(s1,s2)

输出:

368 362

38.合作小组

班里有35位同学,新来的王老师想以随机组合的方式给同学们组建合作小组促进学习,已知同学们的学号范围是1~35号,王老师编写了以下程序来生成5个合作小组,如下图所示,请你帮忙补全代码:

import random#导入随机数模块

numbers=35*[0]#创建35个元素值均为0的列表

flags=35*[False]#创建35个元素值均为False的列表

        ①        

while i<=34:

    n=random.randint(1,35)#随机产生1-35之间的整数

    if not flags[n-1]:

                ②        

        numbers[i]=         ③                   

        i+=1

for i in range(5):

print("第"+str(        ④        )+"组:",numbers[i*7:7*(i+1)])

参考答案及解析:

一、单选题

1. 答案:B

   - 解析:冒泡排序的思想:依次比较相邻的两个数将小数放在前面,大数放在后面。

2. 答案:D

   - 解析:选择排序的思想:第1轮排序从第1个到第n元素中找到最小元素,如果最小元素不是第1个元素,就交换它和第1个元素的位置,所以第1轮排序的结果是:2,9,8,6,3,4;第2轮排序在第2个元素到第n个元素中找到最小元素,如果最小元素不是第2个元素,就交换它和第2个元素的位置,第2轮排序的结果是:2,3,8,6,9,4。

3. 答案:B

   - 解析:韩信点兵问题可以通过枚举算法,逐一尝试可能的物品数量,直到满足条件为止。

4. 答案:D

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

5. 答案:B

   - 解析:当try语句块正确时,try代码块执行完毕,会执行else语句块,然后执行finally语句块。

6. 答案:B

   - 解析:十进制数25转化为二进制数是11001。

7. 答案:A

   - 解析:八进制数30转化为十进制是3×8^1 + 0×8^0 = 24。

8. 答案:D

   - 解析:十进制数90转化为十六进制是5A。

9. 答案:C

   - 解析:十六进制数3C转化为十进制是60,八进制是74,hex(60)也是'0x3c',二进制是111100。

10. 答案:B

   - 解析:menu和price不是二维数组;若menu和price的元素数量不相同,程序会出错;程序中len(menu)改成len(price),其他不变,结果一样。该段程序会输出4行结果。

11. 答案:D

   - 解析:这段程序将列表color中的元素用分号连接后写入文件,有输出;列表中的元素不是二维数据元素;f.close()语句很重要,用于关闭文件资源,不是可有可无。

12. 答案:D

   - 解析:二维列表的索引方式是gz[索引1][索引2],所以查询'殷小飞'的工资情况可使用gz[2][2]。

13. 答案:A

   - 解析:一维数据通常采用列表形式来表示;二维数据可以通过多种方式存储处理,不只是CSV文件;列表可以表示二维数据;存储在列表中的数据可以写入到CSV文件中。

14. 答案:B

   - 解析:如果文件'words.csv'不存在,open()函数会自动创建新文件;变量f表示该CSV文件对象;最终f对象中的内容是:I really like the cat!;f.close()应该写,以确保文件资源正确释放。

15. 答案:C

   - 解析:sum([3,2,1],int('3')) = 9;sum([3,2,1],max(1,2,3)) = 9;sum([3,2,1],[3])会报错,因为sum函数的参数应该是可迭代对象中的数字,而不是列表;sum([1,2,3,2,1]) = 9。

16. 答案:D

   - 解析:divmod(9, 2)返回商和余数组成的元组。

17. 答案:B

   - 解析:list(enumerate(x))会生成一个可迭代对象,包含索引和元素值,转换为列表后是[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]。

18. 答案:C

   - 解析:a = min('654') = '4',对应的整数是4,max(float(a),3,2)是正确的表达式。

19. 答案:A

   - 解析:a & b表示两个集合的交集,即共同的元素组成的集合。

20. 答案:D

   - 解析:sorted(b,reverse=1)会将元组b进行排序并返回一个新的列表,降序排列。

21. 答案:C

   - 解析:bool(4)返回True,在算术运算中True相当于1,所以bool(4)+3 = 1+3 = 4。

22. 答案:C

   - 解析:print(sorted(a))会返回一个新的已排序列表,不改变原列表a的顺序,是升序排列;a.sort()会直接对原列表a进行升序排序。

23. 答案:D

   - 解析:list(set(a))将列表a转换为集合去除重复元素,再转换为列表,得到[1,2,3,4]。

24. 答案:C

   - 解析:round(5.2)=5;pow(1,8)=1;max(2,3,4,5,6)=6;len([2,3,4,5,6])=5。

25. 答案:C

   - 解析:a='0123456789',min(a)='0',max(a)='9',所以结果为两个字符串相连,正确答案为:09,也就是选项C。

二、判断题

26. 答案:对

   - 解析:bin(10)将十进制数10转换为二进制数是'0b1010';int("1101",2)将二进制数'1101'转换为十进制数是13。

27. 答案:错

   - 解析:oct(10)将十进制数10转换为八进制数是'0o12',hex(10)将十进制数10转换为十六进制数是'0xa',结果不相等。

28. 答案:错

   - 解析:readline()每次读取文件的一行;read()读取整个文件内容为一个字符串;readlines()读取整个文件内容到一个列表中,结果不同。

29. 答案:错

   - 解析:write()函数只能写入字符串;writelines()可以写入一个字符串序列(如列表),但不一定是多行。

30. 答案:对

   - 解析:writerows()可以将一个可迭代对象(如列表)中的每个元素作为一行写入 CSV 文件,实现了多行输入。

31. 答案:错

   - 解析:all([1,2,3])返回True,any([3,2,1])也返回True,所以结果应该是Yes。

32. 答案:错

   - 解析:max(['1', '2', '3'])会按照字符串比较大小,返回'3';max([1, 2, 3])会按照数字比较大小,返回3,结果不同。

33. 答案:对

   - 解析:集合和元组的遍历顺序不一定相同,两次print()打印出的结果可能不一样。

34. 答案:错

   - 解析:any(['小陈', 'False', '小李', 'True'])中有非空元素,结果为True。

35. 答案:对

   - 解析:输入对象类型错误,执行 print('ok')。

三、编程题

36.参考答案:

参考程序:

import random

maxn=int(input("输入生成大写字母个数"))

a=[ ]

for i in range(maxn):

    c=random.randint(1,26)

    numb=chr(64+c)

    a.append(numb)

print("随机产生原始字母:",a)

m,n=0,maxn

while m<n:

    i=n-1

    while a[i]!=a[m]:

        i=i-1

    if i==m:

        m=m+1

    else:

        a.remove(a[i])

        n=n-1

for i in range(n):

    for j in range(len(a)-1,i,-1):

        if a[j]<a[j-1]:

            a[j],a[j-1]=a[j-1],a[j]

print("去重后字母排序:",a)

print("共删除字母个数:",maxn-n,"个")

试题解析:

评分标准:

(1)a.append(numb) 或等效答案;(3分)

(2)a[i]!=a[m] 或等效答案;(4分)

(3)m=m+1 或等效答案;(3分)

(4)a[j],a[j-1]=a[j-1],a[j] 或等效答案;(3分)

(5)maxn-n 或等效答案。(3分)

解析:

(1)a.append(numb):将随机生成的大写字母添加到列表a中。

(2)a[i]!= a[m]:在去重过程中,当当前元素与正在比较的元素不同时,继续向前查找。

(3)m = m + 1:如果找到了一个不重复的元素,移动指针继续下一个元素的检查。

(4)a[j], a[j - 1] = a[j - 1], a[j]:在排序过程中,如果后面的元素小于前面的元素,进行交换。

(5)maxn - n:计算删除的字母个数,初始长度为maxn,去重排序后长度为n,两者之差即为删除的字母个数。

37.参考答案:

参考程序:

import csv

with open("/data/植树.csv") as f:

    h=list(csv.reader(f))

s1=0

s2=0

for i in range(len(h)):

    if int(h[i][0])==1:

        s1=s1+int(h[i][1])

    if int(h[i][0])==2:

        s2=s2+int(h[i][1])

print(s1,s2)

试题解析:

评分标准:

(1)csv.reader(f) 或等效答案;(2分)

(2)int(h[i][1]) 或等效答案。(2分)

解析:

(1)csv.reader(f)用于读取 CSV 文件内容,将其转换为一个可迭代的对象,list(csv.reader(f))将这个可迭代对象转换为列表,方便后续的操作。

(2)int(h[i][1])表示将当前行的第二列(植树数量)转换为整数并累加到s2中。

38.参考答案:

参考程序:

import random

numbers=35*[0]

flags=35*[False]

i=0

while i<=34:

    n=random.randint(1,35)

    if not flags[n-1]:

       flags[n-1]=True

       numbers[i]=n

       i+=1

for i in range(5):

    print("第"+str(i+1)+"组人员:",numbers[i*7:7*(i+1)])

试题解析:

评分标准:

(1)i=0 或等效答案;(2分)

(2)flags[n-1]=True 或等效答案;(3分)

(3)n 或等效答案;(3分)

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

解析:

(1)初始化变量i为 0,用于遍历列表和填充numbers列表。

(2)当随机选取的学号未被使用时,将其标记为已使用,即flags[n - 1] = True。

(3)将随机生成的学号赋值给numbers[i],即numbers[i] = n。

(4)输出组号时,从 1 开始,所以是str(i + 1)。

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴朗向上

你的鼓励是我最大的动力,感谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值