2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(二级)答案 + 解析
更多真题在线练习系统:历年真题在线练习系统
一、单选题(共25题,共50分)
1. 已知字典如下
dic1 = {
'name': 'Ming',
'age':20,
'grade': 'A',
'Tel':6666666
}
以下哪个代码运行结果为20?( )
A. dic1('age')
B. dic1[1]
C. dic1(20)
D. dic1['age']
标准答案:D
试题难度:一般
试题解析:字典键是唯一的,所以可以通过键获得值,格式为 字典名[键名],所以选D
2. 若 ls = ["cat", "dog","tiger", "fox"],则运行代码 ls[1:2] 的结果是?( )
A. ["cat"]
B. ["dog"]
C. ["tiger"]
D. ["fox"]
标准答案:B
试题难度:一般
试题解析:首先,列表的正索引是从左向右从0开始,其次,ls[1:2]只能取到1号,不包含2号,则ls[1:2]的结果只能是["dog"]。
3. 有代码 city = ["Qingdao","Beijing","Shanghai","Wuhu","Hefei"],则正确获取 city 元素个数的命令是?( )
A. city.clear()
B. city.copy()
C. city.reverse()
D. len(city)
标准答案:D
试题难度:一般
试题解析:获取列表元素个数的函数(方法)是len()。
4. 已知 d = {"东岳":"泰山", "西岳":"华山", "南岳":"衡山", "北岳":"恒山"},则向 d 中添加元素的选项是?( )
A. d.pop("中岳")
B. d.get("中岳")
C. d["中岳"] = "嵩山"
D. del d["中岳"]
标准答案:C
试题难度:一般
试题解析:对于字典d,可以使用 d['key'] = 'value' ,即使用索引赋值的方式添加元素。
5. 已知列表ver=['香菱',11,"钟离",28,"芭芭拉",'神里绫华'],下列哪个命令能够获得列表中的"芭芭拉"?( )
A. ver[5]
B. ver[3]
C. ver[-2]
D. ver[-1]
标准答案:C
试题难度:一般
试题解析:列表list的元素只要是Python支持的数据类型就可以,故上述列表中共有6个元素;列表的索引从左向右计数时,是从0开始递增的,即0,1,2……;若从右向左计数,则从-1开始递减,即-1,-2,-3……;该列表倒数第二个元素通过索引值4或-2访问。故本题答案选C。
6. 小宸同学最近迷上了姓名查重系统(当输入一个人名时,系统自动反馈当前全国取这个名字的人数)。小宸想用Python做个简单版的名字查重系统:将自己所在的年段所有学生姓名存入列表中,当输入人名,反馈该人名在本年段重名人数。请问,统计某个人名在年段出现的次数,可以使用以下哪个函数?( )
A. append()
B. insert()
C. count()
D. index()
标准答案:C
试题难度:一般
试题解析:
列表中append()函数用于向列表新增单个元素;insert()函数用于向列表指定位置插入元素;index()函数用于在列表中查找某个元素出现的初始位置,count()函数用于统计元素出现的次数。
7.
s1="Let life be beautiful like summer flowers and death like autumn leaves."
s2=s1.split()
print(type(s2))
以上程序运行的结果?( )
A. <class 'set'>
B. <class 'str'>
C. <class 'list'>
D. <class 'dict'>
标准答案:C
试题难度:一般
试题解析:
str.split(参数)其功能是使用参数中指定的字符将字符串str分割成字符串列表,结果返回的是列表类型。
8.
a=[70,71,72,73,74,75]
b=('2021年','2022年','2023年','2024年')
c="新中国,旧中国"
以下哪个选项可以实现输出字符串“2024年是新中国成立75周年。”?( )
A. print(b[3]+"是"+c[:3]+"成立"+str(a[5])+"周年。")
B. print(b[3]+"是"+c[:3]+"成立"+a[5]+"周年。")
C. print(b[3]+"是"+c[:4]+"成立"+str(a[5])+"周年。")
D. print(str(b[3])+"是"+c[:4]+"成立"+str(a[5])+"周年。")
标准答案:A
试题难度:较难
试题解析:
字符串之间的连接可采用连接符“+”,字符串与整型数字类型无法直接连接,需将其他类型的数据转化为字符串类型后方可连接。其他数据类型转换为字符串类型可使用str()函数。字符串的索引从下标0开始,字符串的切片遵循左闭右开原则。
B选项a[5]的结果是“int”类型,无法直接与其余字符串类型进行连接。
C、D选项输出的结果是“2024年是新中国,成立75周年。”未能输出题目指定的字符串。
9.
for i in range(2024,2124):
if(i%400==0 or (i%4==0 and i%100!=0)):
print("{}是闰年。".format(i))
else:
continue
以上程序的作用是?( )
A. 从2024遍历到2124,判断哪些年份是闰年,并输出闰年年份
B. 从2024遍历到2123,判断哪些年份是闰年,并输出闰年年份
C. 从2025遍历到2124,判断哪些年份是闰年,并输出闰年年份
D. 寻找2024年至2123年期间的第一个闰年
标准答案:B
试题难度:一般
试题解析:
Python程序的循环结构+if条件结构。range()函数会生成数列,range(left,right[,step]):左闭右开区间即大于等于left,小于right。step是步长。
10.
在Python中,下列选项不属于循环结构语句的是?( )
A.
for 变量 in 序列:
语句块
B.
while(判断条件):
语句块
C.
for 变量 in range(100):
语句块
D.
do:
语句块
whlie(判断条件);
标准答案:D
试题难度:一般
试题解析:在Python程序中,没有do……while直到型循环。
11. 以下选项无法创建列表的是?( )
A. ls=list()
B. ls=['字典';'集合']
C. ls=['列表','元组','字符串']
D. ls=list(range(10))
标准答案:B
试题难度:一般
试题解析:
选项A,用于创建一个空列表,等效于 ls=[]
选项B,无法创建列表,列表元素之间应该用逗号分隔
选项C,直接录入列表元素创建列表
选项D,利用list函数将序列转换为列表
所以选B
12.
以下程序段执行的结果是?( )
ls=[1,2]
ls.append([1,2,3])
ls.extend([1,2])
ls.remove(2)
print(ls)
A. [1,[1,2,3],[1,2]]
B. [1, [1, 2, 3], 1, 2]
C. [1,[1,3],[1]]
D. [1,1,3,1]
标准答案:B
试题难度:一般
试题解析:ls.append([1,2,3])将列表[1,2,3]作为一个元素添加到ls中,添加后列表ls为[1,2,[1,2,3]] ls.extend([1,2])在ls列表末尾追加列表[1,2]中的所有元素,所以该语句执行后ls为[1,2,[1,2,3],1,2] ls.remove(2)删除ls列表中第一个出现的元素2,所以该语句执行后ls为[1, [1, 2, 3], 1, 2] 所以程序段的执行结果是[1, [1, 2, 3], 1, 2]。
13. 阿宝的期末考试成绩保存在字典score中,score={'数学':100,'语文':95,'英语':98,'科学':97,'美术':98,'音乐':99},以下删除字典中音乐成绩的语句正确的是?( )
A. del score[音乐]
B. del score['音乐']
C. score.pop(音乐)
D. score.remove('音乐')
标准答案:B
试题难度:容易
试题解析:删除字典中键值对的方法是用del 字典名[键名]
14. 下面哪个选项是一个格式正确的元组?( )
A. [1, 2, 3]
B. {1, 2, 3}
C. (1, 2, 3)
D. (1、2、3)
标准答案:C
试题难度:一般
试题解析:元组是用小括号括起来的,元素之间是逗号,因此选 C。
15. 运行这段代码,终端区会打印什么内容?( )
for i in range(10):
if i > 5:
print(i, end='')
A. 12345678910
B. 0123456789
C. 56789
D. 6789
标准答案:D
试题难度:一般
试题解析:range(10) 的范围是 0-9,条件判断大于 5 才成立,因此会打印 6789。
16. 将古诗《春晓》的句子存入列表如下: lst=['春眠不觉晓,', '处处闻啼鸟,', '夜来风雨声,', '花落知多少。'] 请问len(lst[3])的值是?( )
A. 4
B. 5
C. 6
D. 7
标准答案:C
试题难度:一般
试题解析:len()函数的作用是求出括号内的对象的长度。 本题中lst[3]表示列表中下标为3的元素,即 '花落知多少。' ,中文长度为5,标点符号'。'长度为1,总长度为6。
17. 小明所在的小组有5位同学,他们本次的数学考试成绩存储在一个元组中,如下所示: tuple = (88, 93, 76, 85, 90) 这时小明需要在终端中打印元组中的第二个分数,他应该在终端输入如下哪个代码呢?( )
A. print(tuple[1])
B. print(tuple.get(1))
C. print(tuple[2])
D. print(tuple.index(1))
标准答案:A
试题难度:一般
试题解析:在Python中,可以通过索引来访问元组中的元素。由于索引是从0开始的,所以元组中的第二个元素的索引是1。 选项A正确地返回了元组中的第二个元素。选项B是错误的,因为元组没有get方法。选项C返回的是元组中的第三个元素。选项D返回的是元组中第一个值为1的元素的索引,而不是第二个元素。
18. 小明帮妈妈浇花,如果花盆里土的湿度低于30%,就需要浇水。如果用变量moisture表示土壤湿度,以下哪个Python语句可以模拟需要浇水的情况?( )
A.
if moisture>30%:
print('浇水')
B.
if moisture<30%:
print('浇水')
C.
if moisture>30%:
print('不浇水')
D.
if moisture<30%:
print('不浇水')
标准答案:B
试题难度:一般
试题解析:Python语言中if语句的正确格式是 if 条件: 语句,其中“语句”部分是要执行的代码。选项A和D的逻辑与题目描述相反,选项C描述的是不需要浇水的情况,并且第二行没有缩进。因此,正确答案是B。
19. 小明想要通过Python来判断一个数字num是否是偶数。以下哪个语句是正确的?( )
A.
if num%2 != 0:
print("是偶数")
B.
if num%2 == 0:
print("是偶数")
C.
if num/2 == 0:
print("是偶数")
D.
if num/2 != 0:
print("是偶数")
标准答案:B
试题难度:一般
试题解析:在Python中,判断一个数字是否是偶数,通常使用取模运算符(%)。如果一个数字除以2的余数是0,那么它就是偶数。因此,正确的语句是if num%2 == 0: print("是偶数")。
20. 以下各项中,哪一个表示的是列表?( )
A. [1; 3; 3; 2; 4]
B. {1, 3, 3, 2, 4}
C. [1, 3, 3, 2, 4]
D. (1, 3, 3, 2, 4)
标准答案:C
试题难度:容易
试题解析:Python中,用方括号[ ]表示列表,逗号分隔其中的元素,本题正确答案选C。
21. 以下关于字符串的描述,不正确的是?( )
A. 字符串定义后不可修改
B. 字符串可以用“*”操作符进行连接
C. 字符串是用单引号或双引号括起来的一串字符
D. 内置函数len()返回字符串的长度
标准答案:B
试题难度:容易
试题解析:字符串是由“+”操作符连接,由“*”进行重复,故此题正确答案是选项B。
22. 已知dict = {'语文':59,'数学':99,'英语':97},执行以下哪个命令可以将其修改为{'语文':95,'数学':99,'英语':97}?( )
A. dict[0] = 95
B. dict[1] = 95
C. dict[语文] = 95
D. dict['语文'] = 95
标准答案:D
试题难度:容易
试题解析:序列是以连续的整数为索引,而字典是以关键字为索引,关键字需是任意不可变类型,通常用字符串或数值,选项A、B是序列模式的索引,选项C的索引是变量,故本题正确答案是选项D。
23. 创建元组时,使用下列哪个符号?( )
A. ()
B. []
C. <>
D. ''
标准答案:A
试题难度:容易
试题解析:创建元组时使用( ),创建列表使用[ ],创建字符串使用' ' 或者 " "。所以本题正确答案为A。
24. 运行以下程序,打印的最后一个数字是?( )
i = 0
while i < 100:
print(i)
i = i + 1
A. 98
B. 99
C. 100
D. 101
标准答案:B
试题难度:较难
试题解析:当i小于100时,才会执行循环体中的语句,99是大于100的最大的数字,因此打印的最后一个数字是99。所以本题正确答案为B。
25. 在Python中,下列关于 range() 说法正确的是?( )
A. range()是列表
B. range()是函数,能生成一系列英文字母
C. range()是函数,能生成一系列数字
D. range()是函数,能生成一系列汉字
标准答案:C
试题难度:容易
试题解析:range()函数是Python中一个强大而灵活的内置函数,它主要用于生成一个整数序列。
二、判断题(共10题,共20分)
26. for、while和if均可以相互嵌套使用。( )
A. 正确
B. 错误
标准答案:正确
试题难度:一般
试题解析:for里面可以嵌套while、if,while中也可以嵌套if和for,if语句中同样可以嵌套for和while。
27.
str1='加油!'+'加油!'+'加油!'
str2='加油!'*3
str1和str2是一样的,都是“加油!加油!加油!"( )
A. 正确
B. 错误
标准答案:正确
试题难度:容易
试题解析:
字符串的*运算,表示字符串的复制
字符串的+运算,表示字符串的连接
str1='加油!'+'加油!'+'加油!'
str2='加油!'*3
str1和str2的结果都是:'加油!加油!加油!'
28. 在编写一个需要用户输入数字(数字为整数)并判断其奇偶性的程序时,可以使用input()函数获取用户输入,并使用int()函数将输入转换为整数类型。( )
A. 正确
B. 错误
标准答案:正确
试题难度:一般
试题解析:正确。在Python中,input()函数用于获取用户输入的字符串类型的数据,而int()函数可以将字符串转换为整数类型(前提是字符串的内容可以表示为一个整数)。因此,在编写需要判断用户输入数字奇偶性的程序时,可以先使用input()函数获取输入,然后使用int()函数进行类型转换。
29. 执行代码print('今年是%d年,农历%s年。'%(2024,'甲辰')),得到的输出结果为“今年是2024年,农历甲辰年。”。( )
A. 正确
B. 错误
标准答案:正确
试题难度:较难
试题解析:考察字符串的格式化输出,%d表示该位置为数值,%s表示该部分为字符串,最后的%用于分隔字符串与值。
30. 可以使用index(x)方法获取所有值为x的元素的索引。( )
A. 正确
B. 错误
标准答案:错误
试题难度:容易
试题解析:可以使用index(x)方法获取第一个值为x的元素的索引。
31. break语句可以跳出所有循环。( )
A. 正确
B. 错误
标准答案:错误
试题难度:容易
试题解析:break语句可以跳出break语句所在的这层循环。
32. 在if…else…语句中,当if语句不执行时,会执行else语句。( )
A. 正确
B. 错误
标准答案:正确
试题难度:容易
试题解析:在if…else…语句中,当if语句不执行时,会执行else语句。
33. del语句可以删除整个列表,clear()方法可以清除列表中所有的元素。( )
A. 正确
B. 错误
标准答案:正确
试题难度:一般
试题解析:在Python的列表操作中,del语句可以删除整个列表,clear()方法可以清除列表中所有的元素。
34. 字典(dictionary)和列表(list)的共同点是都可以通过下标访问内容。( )
A. 正确
B. 错误
标准答案:错误
试题难度:容易
试题解析:考察字典的概念,字典存储的是键值对,只能通过键值访问。
35. 在Python中,元组是无序不重复的。( )
A. 正确
B. 错误
标准答案:错误
试题难度:一般
试题解析:元组是由一系列按特定顺序排列的元素组成,元素可以重复。
三、编程题(共2题,共30分)
36. 马铃薯也叫土豆,是一种常见的根茎类蔬菜,每个土豆根据重量可以分为以下四个等级:
A类(大土豆) 重量>=50克
B类 (中土豆) 50克>重量>=30克
C类(小土豆) 30克>重量>=20克
D类(微小土豆)重量<20克
不同类别市场批发价格也不同:
A类:1.5元/500克
B类:1.2元/500克
C类:1元/500克
D类:0.7元/500克
阿宝下乡研学期间发现土豆的分类和分拣通常由人工观察,进行大致分类。阿宝想,是否可以做一个自动分拣土豆机,根据土豆的重量结合机械手臂进行自动分拣。
你可以帮助阿宝编写这个程序吗?该程序需要实现以下功能:
(1)录入每个土豆的重量(用来模拟,称重后的读数);假定输入数据是合理范围(都是大于等于0的数字,为了便于计算,要求输入的数据都是整数)
(2)当录入0时,程序停止运行,并打印所有土豆售出后的销售额;(提醒大家,土豆的售价是以500克为单位,每个土豆的价格需要进行换算,换算公式为:每个土豆价格=每个土豆的重量*批发价/500)
(3)销售金额,最终结果保留2位小数
【输入样例】
80
50
90
70
40
30
20
10
20
60
78
65
0
【输入样例】
销售额是:1.74元
友情提示:
由于考试平台暂不支持eval()命令,同学们可以选用其他命令;当然如果您使用了,只要程序是正确的,我们阅卷时依然按照正常处理。
标准答案:
参考程序:
A=[] #>50g
B=[] #30-50g
C=[] #20-30
D=[] #<20
while True:
weight=int(input())
if weight==0:
break
if weight>=50:
A.append(weight)
elif weight>=30:
B.append(weight)
elif weight>=20:
C.append(weight)
else:
D.append(weight)
#一斤:500g
total=sum(A)*1.5/500+sum(B)*1.2/500+sum(C)*1/500+sum(D)*0.7/500
print('销售额是:{:.2f}元'.format(total))
试题难度:容易
试题解析:
评分标准:
(1)有输入语句;(2分)
(2)有循环语句,当录入0时,循环可以终止;(3分)
(3)条件判断语句书写正确;(3分)
(4)可以正确的对每类土豆重量求和;(2分)
(5)可以正确计算销售额;(3分)
(6)输出提示语正确,保留两位小数格式正确。(2分)
展示地址:点击浏览
37. 小龙同学有个神奇的优势:只要单词中的字母没有任何重复,他就能过目不忘。如果有重复,他则需要专门记忆。请写一段程序,输入一个单词,如果小龙能过目不忘(即:单词中没有重复的字母)则输出"yes",否则(即:单词中有重复的字母)输出"no"。
样例输入1:
boy
样例输出1:
yes
样例输入2:
test
样例输出2: no
友情提示:
由于考试平台暂不支持eval()命令,同学们可以选用其他命令;当然如果您使用了,只要程序是正确的,我们阅卷时依然按照正常处理。
标准答案:
参考程序:
word = input('请输入一个单词:')
list1 = list(word)
flag = 1
for i in list1:
if word.count(i)>1:
flag = 0
if flag:
print('yes')
else:
print('no')
试题难度:一般
试题解析:
评分标准:
(1)有输入语句;(2分)
(2)对输入的词语有遍历处理;(2分)
(3)有识别是否有重复字符的程序;(4分)
(4)有条件语句;(2分)
(5)有输出语句;(2分)
(6)程序运行正确。(3分)
作者:Sinsa_SI