202406 青少年软件编程等级考试Python三级真题 建议答题时长:60min(含答案及分析)

原连接:竞赛考级题库--202406 青少年软件编程等级考试Python三级真题 - Python

1. 编程题

字母去重排序

在一列表中产生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("共删除字母个数:",        ⑤        ,"个")

查看答案https://tiku.kids-scratch.com/dist/#/topic?gid=acc7d8ebab72549c4cd0f83e7349b04c

2. 编程题

植树问题

如下图所示,在“植树.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

查看答案https://tiku.kids-scratch.com/dist/#/topic?gid=3e2ef2dae5d26fd1602b0114bf44faa9

3. 编程题

合作小组

班里有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)])

查看答案https://tiku.kids-scratch.com/dist/#/topic?gid=18b1890de43d81505c2ef6d1f3420acc

4. 单选题

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

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()最好不写

答案:B

分析:

‘w’参数表示只写,默认创建一个新文件,若文件已存在则覆盖写入数据,A错误;f.write(' '.join(word))表示将word中的数据元素以空格符进行连接成字符串,并写入到f文件对象中,C错误;未妥善关闭文件容易导致数据丢失或受损,D错误。

5. 单选题

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

A

十进制数60

B

八进制数74

C

二进制数111110

D

hex(60)

答案:C

分析:

与十六进制数3C相等的二进制数为111100。

6. 单选题

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

A

解析算法

B

枚举算法

C

排序算法

D

查找算法

答案:B

分析:

枚举算法的思想:罗列每一个可能的解,并进行条件判断,确定哪些为真正的解

7. 单选题

用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),其他不变,结果将不一样

答案:B

分析:

menu和price是两个列表形式表现的一维数组,相互独立,故A错;程序的功能是遍历数组中的每个位置,输出该位置上对应的菜名与价格,由于两个数组都是四个元素,故输出四次,共4行,B正确;只有两个数组(列表)元素个数相同,程序才能对位输出,否则将发生溢出错误,C错;由于len(menu)和len(price)值相同,故修改后结果不受影响,D不正确。

8. 单选题

下面两行代码执行结果是?( )
a = '0123456789'
print(min(a)+max(a))

A

9

B

0

C

09

D

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

答案:C

分析:

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

9. 单选题

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

A

gz(3)

B

gz[3]

C

gz(2,2)

D

gz[2][2]

答案:D

分析:

这个二维列表中,'殷小飞'相关数据在第三项子列表中,由于Python中列表索引从0开始,且由[]表示,故应选择gz[2]得到['a3','殷小飞',6536],工资6536仍然是该项中的第三项,因此最后可由gz[2][2]得到。

10. 单选题

列表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

答案: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。

11. 单选题

现有一组初始记录无序的数据“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

答案:B

分析:

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

12. 单选题

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

A

10011

B

11001

C

11000

D

11011

答案:B

分析:

十进制与二进制转化问题。

13. 单选题

如下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]

答案:D

分析:

本题考查学生对sorted()排序函数的理解与掌握。题中的两个要点。一:虽然原题中变量b是元组,但排序后打印出来是列表;二:sorted()函数的参数reverse=1为降序排列,reverse=0为升序排列,所以本题正确答案为D。

14. 单选题

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

A

24

B

30

C

64

D

192

答案:A

分析:

八进制与十进制转化问题。

15. 单选题

小明想得到整数9除以2的商和余数,所以他写下了表达式: x = divmod(9, 2)请问,表达式中的 x 是什么类型?( )

A

浮点数

B

整数

C

列表

D

元组

答案:D

分析:

本题考查学生对divmod()函数的理解,divmod()函数返回参数的商和余数,商和余数以元组的形式返回,所以x的类型,是元组。

16. 单选题

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

A

round(5.2)

B

pow(1,8)

C

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

D

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

答案:C

分析:

round(5.2) 四舍五入结果是5;len([2,3,4,5,6])计算元素个数,结果也是5;max(2,3,4,5,6)找出元素中最大的数,结果是6;pow(1,8)计算1的8次方,结果是1。所以本题答案是选项C。

17. 单选题

小明编写了如下3行代码,请问代码运行后print()打印出的结果是?( )
a = set('大家好我是小明')
b = set('你好我是大明')
print(a & b)

A

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

B

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

C

{'家', '小', '你'}

D

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

答案:A

分析:

本题是求两串字符的交集,选项A中的5个字,在两个字符串中都存在,所以答案是选项A。

18. 单选题

执行下面代码:
print(bool(4)+3)
结果应该是?( )

A

会报错!

B

6

C

4

D

7

答案:C

分析:

bool函数是int子类型,如果有参数,会返回True也就是整数1,所以正确答案是选项C,也就是数字4。

19. 单选题

有如下两行代码,请问代码运行之后,打印出的结果是?( )
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]

答案:D

分析:

set()函数将列表a转为集合之后,会自动去除重复的元素,再次使用list()函数将集合转为列表,那么打印出来的结果就是选项D 。

20. 单选题

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

A

50

B

1A

C

A5

D

5A

答案:D

分析:

十进制与十六进制转化问题。

21. 单选题

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))

答案:C

分析:

正确答案选C 。因为 min('654') 得到的是一个字符,而chr()、bin()、hex()三个函数的参数都必须是整数,所以唯一正确的是选项C ,float()函数可以将字符转换成浮点数。

22. 单选题

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

A

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

B

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

C

列表不能表示二维数据

D

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

答案:A

分析:

在Python中,通常采用列表来表示一维数据,二维数据也可以用二维列表来表示,A正确,B错误;CSV文件可存储一、二维数据,列表也是,C错误;列表中的数据可以通过遍历逐个写入CSV文件,D错误。

23. 单选题

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

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'] )

答案:B

分析:

enumerate() 函数用于将一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标,所以正确答案为选项 B。

24. 单选题

下面代码中,运行结果不等于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])

答案:C

分析:

考查学生对常见内置函数的掌握情况。ABD三个选项运行结果都等于9,C末尾的3是列表中的元素,不能直接参与计算,所以会报错。

25. 单选题

有如下程序:

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

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

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

f.close()

下列说法正确的是?( )

A

这段程序没有输出

B

color列表不可以理解成一个一维数组

C

f.close()语句可有可无

D

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

答案:D

分析:

算法程序必有输出,这段程序的输出是color.csv文件,A错;color列表可理解成一个一维数组,B错;程序中文件没有用with语句打开,处理结束后不会自动关闭相应的文件,因此需要f.close()语句关闭文件,C错;程序功能是将各元素以“;”的形式连接在一起并输出,D正确。

26. 单选题

运行下列程序段:

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

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

答案:D

分析:

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

27. 单选题

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

A

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

B

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

C

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

D

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

答案:B

分析:

当try语句块正确时,try代码块执行完毕,执行else语句块。

28. 单选题

小明编写了如下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会降序排列。

答案:C

分析:

内置函数sorted()默认将列表中的数据升序排列;列表的sort()方法,默认也是将列表的值进行升序排列,所以正确答案是C。

29. 判断题

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

A

正确

B

错误

答案:错误

分析:

oct(10)='0o12' 是将十进制整数转换为八进制数字符串。
hex(10)='0xa' 是将十进制整数转换为十六进制数字符串。

30. 判断题

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

A

正确

B

错误

答案:正确

分析:

考核bin()将十进制整数转换为二进制数字符串,int()将二进制数字字符串转换为十进制数。

31. 判断题

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

a = all([1,2,3])
b = any([3,2,1])
if a == b :
   print('Yes')
else:
   print('No')

A

正确

B

错误

答案:错误

分析:

all()与any()两个函数,只要内部元素不为空,则都返回True,所以代码运行结果应该为Yes。判断应该选择“错误”。

32. 判断题

有如下所示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)

A

正确

B

错误

答案:正确

分析:

本题答案正确。变量a是集合,b是元组,元组有顺序,每次print()打印出来都一样,而集合无顺序,每次打印出来顺序都可能不同,所以二者打印出来的结果,可能不会一样。

33. 判断题

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

try:
   x=eval(input())
   print(x)
except NameError:
   print('ok')

A

正确

B

错误

答案:正确

分析:

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

34. 判断题

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

A

正确

B

错误

答案:错误

分析:

readline()表示每次读取文件中的一行;read()表示每次读取整个文件,且整个文件内容以字符串形式返回,而readlines()表示每次按行读取整个文件内容,以列表类型返回数据。

35. 判断题

max()函数用于获取参数列表中的最大值,所以表达式
max(['1', '2' , '3'])与表达式max([1, 2, 3])运行结果是相同的。
请判断是否正确?( )

A

正确

B

错误

答案:错误

分析:

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

36. 判断题

执行:print(any(['小陈', 'False', '小李', 'True'])) 得到的结果是:False 。

请判断是否正确?( )

A

正确

B

错误

答案:正确

分析:

any的参数都是字符串,全真,所以返回True。

37. 判断题

有如下程序代码:

import csv

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

   wrt=csv.writer(f)

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

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

A

正确

B

错误

答案:正确

分析:

writerow()函数以单行形式写入文件,writerows()以多行方式写入文件。

38. 判断题

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

A

正确

B

错误

答案:错误

分析:

write()函数的参数是字符串,可向文件中写入一行或多行数据(字符串中包含换行符)

### 蓝桥杯 Python B组 历年真题及解析 #### 真题概述 蓝桥杯竞赛作为一项面向全国大学生的信息技术比赛,其Python B组的题目涵盖了广泛的知识领域和技术难度层次。这些题目不仅考察参赛者的编程技能,还测试逻辑思维能力和解决问题的能力。 #### 题目特点与分类 根据过往的比赛情况,可以发现蓝桥杯Python B组的题目通常分为几个主要类别: - **基础算法类**:涉及排序、查找等基本操作。 - **数据结构应用**:栈、队列、链表的应用场景较多见。 - **数学问题求解**:包括但不限于数论、组合数学等内容。 - **字符串处理**:模式匹配、编码转换等方面的问题也较为常见。 具体到每一年的具体题目上,则会有所变化和发展趋势[^1]。 #### 解析方法 对于准备参加此类赛事的学生而言,掌握有效的学习路径至关重要。建议通过以下几个方面来提升自己应对考试的能力: - **熟悉官方文档**:深入理解Python标准库的功能特性及其使用方式。 - **多做模拟训练**:定期参与在线评测平台上的练习活动,积累实战经验。 - **总结归纳技巧**:针对不同类型的问题整理出通用解决方案模板,提高答题效率。 以下是部分具有代表性的历年真题实例以及相应的解答思路说明: ##### 示例一:小写字母统计 (第十五届青少年) 该题要求编写程序计算给定字符串中小写英文字母的数量并按字母顺序输出各个字符出现次数最多的前几位(可选参数指定)。此题目的核心在于如何高效地完成字符频率统计工作,并按照特定规则筛选结果。 ```python from collections import Counter def count_lower_chars(s, top_n=None): counter = Counter([ch for ch in s if 'a' <= ch <= 'z']) most_common = counter.most_common(top_n) result = [] for char, freq in sorted(most_common, key=lambda x: (-x[1], x[0])): result.append(f"{char}:{freq}") return ','.join(result) or "无" ``` ##### 示例二:带宽计算 (2021年第十二届国赛) 这是一道关于网络通信中传输速率概念的理解题。题目描述了一个文件下载过程中的平均速度估算问题,在实际解决过程中需要注意单位换算及时长折算等问题[^2]。 ```python def calculate_bandwidth(file_size_mb, time_seconds): bandwidth_bps = file_size_mb * 8e6 / time_seconds units = ['bps', 'Kbps', 'Mbps', 'Gbps'] unit_index = min(int(bandwidth_bps != 0 and math.log(abs(bandwidth_bps), 1024)), len(units)-1) formatted_value = round(bandwidth_bps / pow(1024, unit_index), 2) final_unit = units[unit_index] return f'{formatted_value} {final_unit}' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值