2024年06月中国电子学会青少年软件编程(Python)等级考试试卷(二级)答案 + 解析

一、单选题

1、列表 fruit = ['西瓜', '菠萝', '哈密瓜', '葡萄'],以下哪个选项,可以获取列表最后一个元素?( )

A. fruit[len(fruit)]

B. fruit[len(fruit) - 1]

C. fruit[len(fruit) + 1]

D. fruit[0]

正确答案:B

答案解析:len() 函数可以获取列表的长度,len(fruit) 的值就是 4,列表的元素索引是从 0 开始的,那么最后一个元素的索引就是 len(fruit) - 1

2、初唐四杰是指唐朝初期的四位文学家,分别是王勃、杨炯、卢照邻和骆宾王。目前列表 names 如下:

names = ['王勃', '杨炯', '白居易', '卢照邻', '骆宾王']

列表中多了一位不是初唐四杰的文学家,以下哪个选项可以删除列表中的这位诗人?( )

A. names.pop()

B. names.pop(1)

C. names.pop(2)

D. names.pop(3)

正确答案:C

答案解析:白居易不是初唐四杰,他在列表中的索引是 2,用 pop 语句弹出元素的时候,需要将元素的索引填写在括号中。

3、小明在语文课学习了一个新成语:'从善如流';形容能迅速而顺畅地接受别人的正确意见,执行以下语句,终端区会打印什么内容?( )

idiom = '从善如流'

for i in idiom:

   print(i)

A. 从 善 如 流

B.

C. 从善如流

从善如流

从善如流

从善如流

D.

i

i

i

i

正确答案:答案解析:遍历字符串会挨个将字符装进循环变量中,打印语句会自动换行,因此会打印出 B 选项的内容

4、my_tuple = (1, 2, 3, 4, 5)

print(my_tuple[::-2])  

以上代码的输出是?( )

A. (1, 3, 5)

B. (1, 2, 3, 4, 5)

C. (5, 3, 1)

D. (5, 4, 3, 2, 1)

正确答案:C

答案解析:元组切片,步长为-2,从后往前,隔一个生成新的元组,结果为C

5、行如下代码,输出结果是?( )

tuple = ('q', 'i', 'n', 'g', 'd', 'a', 'o', '1024')

print(max(tuple) + min(tuple))

A. 1024 q

B. 1024q

C. q 1024

D. q1024

正确答案:D

答案解析:本题考察获取元组最值并进行连接,max()返回最大元素,min()返回最小元素。

6、

for var in         :

   print(var)

哪个选项不符合上述程序空白处的语法要求?( )

A. range(0,10)

B. (1, 2, 3)

C. a>5

D. "Wulaoshi"

正确答案:C

答案解析:for 循环是将可迭代对象逐一取出。a>5是条件语句,不能用于for循环。

7、执行以下代码后,列表ls的元素个数多少个?( )

ls=[1,2,3,['a',"b"]]

ls.append(5)

ls[3].append(6)

A. 6

B. 5

C. 4

D. 7

正确答案:B

答案解析:append()向列表的末尾添加一个元素,ls[3].append()是对列表ls的第3个元素(列表)中增加元素,列表ls的元素个数未变。故本题答案选B。

8、已知xs=(5,'女','北京大学'),该如何定义字符串geshi,才能在执行print(geshi%xs)后得到如下的运行结果?( )

学号:000005    性别:女    学校名称: 北京大学

A. geshi='学号:%6d\t性别:%s\t学校名称: %s'

B. geshi='学号:%06s\t性别:%s\t学校名称: %s'

C. geshi='学号:%06d\t性别:%s\t学校名称: %s'

D. geshi='学号:%6d\t性别:%d\t学校名称: %d'

正确答案:C

答案解析:%06d用于输出十进制整数,右对齐,共占5格,空白处用0填充;%s用于输出字符串。故正确答案为C。

9、小圆同学想要创建空列表P,他可以通过以下哪条语句实现?( )

A. P={}

B. P=()

C. P=[]

D. P=""

正确答案:C

答案解析:列表的创建可使用方括号[]的方式。

10、ls1=[5,2,0,1,4,11,66,38],以下哪种函数或方法可实现列表ls1元素从大到小的排序?( )

A. ls1.sort()

B. ls1.sort(reverse=True)

C. sorted(ls1)

D. ls1.reverse()

正确答案:B

答案解析:列表中sort()函数可传递一个参数reverse,当reverse为False时,列表是按从小到大的顺序进行排序,可以省略;当reverse为True时,列表是按从大到小的顺序进行排序。sorted()默认从小到大排序,原列表值不变。reverse()将原有列表倒序排列。

11、中国电子学会等级考试的官方网址是https://www.qceit.org.cn,用户可以通过注册账号和密码登入网站。不同用户的账号是不同的,但同一用户的账号和密码是一一对应的,最好采用以下哪种数据结构存储账号和密码的对应关系?( )

A. 元组

B. 字典

C. 列表

D. 字符串

正确答案:B

答案解析:字典是键值对的无序可变序列,字典中的每个元素都是一个键值对,可通过键对象找到对应的值对象。本题中每个用户的账户和密码是不同的,并且总是一一对应的关系,字典数据结构可满足这种特点的数据存储。

12、month={1:'Jan',2:'Feb',3:'Mar',4:'Apr',5:'May',6:'Jun',7:'Jul',8:'Aug',9:'Sep',10:'Oct',11:'Nov',12:'Dec'},month[2]的值是?( )

A. Mar'

B. 3:'Mar'

C. :'Fed'

D. 'Feb'

正确答案:D

答案解析:对于字典元素的访问,一般是指通过键获取对应的值。通过“字典名[键]”来返回对应的值对象。本题的month[2]所对应的值是“Feb”字符串。

13、以下程序段运行后打印的结果是?( )

tp=('牢记历史', '不忘过去', '珍爱和平', '开创未来')

tq='山河已无恙','吾辈当自强'

new=tp+tq

print(new)

print(len(new))

A. ('牢记历史', '不忘过去', '珍爱和平', '开创未来', '山河已无恙', '吾辈当自强')

6

B. ('牢记历史', '不忘过去', '珍爱和平', '开创未来', '山河已无恙,吾辈当自强')

5

C. ('牢记历史', '不忘过去', '珍爱和平', '开创未来','+', '山河已无恙', '吾辈当自强')

7

D. 程序运行出错

正确答案:A

答案解析:程序的执行结果是: ('牢记历史', '不忘过去', '珍爱和平', '开创未来', '山河已无恙', '吾辈当自强') 6 语句tq='山河已无恙','吾辈当自强'等价于tq=('山河已无恙','吾辈当自强') 元组的“+”运算表示两个元组元素的合并

14、下列哪个程序不会陷入死循环?( )

A.

false='false'

while false:

   print('该程序已经进入死循环!')

B.

while 0:

   print('该程序已经进入死循环!')

C.

while 1<2:

   print('该程序已经进入死循环!')

D. while 1:

   print('该程序已经进入死循环!')

正确答案:B

答案解析:while循环,当条件判断为真时,循环开始。当条件表达式永远为真,进入死循环。

0、False,1>2,都为假,while循环不会开始执行

1、True,'false',和任何非空字符串都是真。

15、以下程序段执行后绘制出的图形是?( )

import turtle as t

c=['red','yellow','blue','orange','green','pink']

t.left(180)

for i in range(6):

   t.fillcolor(c[i])

   t.begin_fill()

   for j in range(3):

       t.forward(200)

       t.left(120)

   t.end_fill()

   t.left(120)

t.hideturtle()

A.

B.

C.

D.

正确答案:B

16、如果有一个列表fruits = ['苹果', '香蕉', '樱桃'],小明想在'香蕉'和'樱桃'之间添加一个新的水果'桔子',他应该怎么做?( )

A. fruits.append('桔子')

B. fruits.insert(1, '桔子')

C. fruits.insert(2, '桔子')

D. fruits.add('桔子')

正确答案:C

答案解析:append方法会将新元素添加到列表的末尾,所以选项A不正确。insert方法允许你在指定索引位置插入新元素。在这个例子中,'香蕉'的索引是1,所以要在它后面插入'桔子',索引应该是2。列表没有add方法,所以选项D也是错误的。

17、执行语句print(list(range(1,5)))的输出结果是?( )

A. [1, 2, 3, 4]

B. [1, 2, 3, 4, 5]

C. 1, 2, 3, 4

D. 1, 2, 3, 4, 5

正确答案:A

答案解析:range()函数用于生成一系列的数,在本题中从指定的第一个值1处开始,到达指定的第二个值5时停止,生成的数不包含第二个值5,故选项B和选项D错误;list()函数用于将range()函数生成的一系列数转换为列表,故选项C错;因此,本题答案为选项A。

18、以下各个选项中的Python语句执行的循环次数与其他不同的是?( )

A.

for i in range(10):

print(i)

B.

for i in range(10,0,-1):

print(i)

C.

 i= 0

while (i<=10):

print(i)

i = i+1

D.

i = 10

while (i>0):

   print(i)

   i = i-1

正确答案:C

答案解析:选项C的循环语句中的循环判断条件是i<=10,i的初值是0,所以循环总共进行0至10总共11次;选项A中的循环进行0至9总共10次,选项B、D中的循环进行1至10总共10次,所以本题答案为选项C。

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

s = '抽刀断水水更流。'

print(s.replace('水', '#'))

A. 抽刀断水水更流。

B. 抽刀断更流。

C. 抽刀断##更流。

D. 抽刀断#水更流。

正确答案:C

答案解析:replace()函数会将字符串中符合要求的所有字符替换成提供的新字符。这段程序是将字符串s中出现的所有“水”替换成“#”,因此输出结果为抽刀断##更流。所以本题正确答案为C。

20、运行以下程序,输出结果为?( )

s = 0

l = [1, 2, 3, 4, 5]

for i in l:

   if i == 2:

       continue

   if i == 4:

       break

   s = s + i

print(s)

A. 15

B. 13

C. 4

D. 10

正确答案:C

答案解析:continue语句会跳出本次循环,break语句会跳出整个循环,当i等于2时,跳出本次循环直接进入下一次循环,当i等于4时,跳出整个循环,因此s的计算结果为s=1+3=4。所以本题正确答案为C。

21、要想把字符串 s = 'abc' 转换成列表类型,以下选项中哪个命令是正确的?( )

A. str(s)

B. int(s)

C. float(s)

D. list(s)

正确答案:D

答案解析:str()可以将其他类型的数据转换成字符串,int()可以将其他类型的数据转换成整数,float()可以将其他类型的数据转换成浮点数,list()可以将其他类型的数据转换成列表。所以本题正确答案为D。

22、下列选项中,关于sort()和sorted()函数说法错误的是?( )

A. sort()函数是在原内存地址上进行排序,会改变原列表的值

B. sorted()函数是在原内存地址上进行排序,会改变原列表的值

C. sorted()函数会生成一个新的已排序列表,不会改变原列表的值

D. sort()函数默认是按照从小到大的顺序进行排序

正确答案:B

答案解析:sorted()函数会生成一个新的已排序列表,不会改变原列表的值。所以本题正确答案为B。

23、小明将自己的考试成绩保存到字典(dictionary)中,如下所示:

dict1 = {'语文':90,'数学':95,'英语':98}

经过核对发现数学少加了2分,现在想修改字典中的数学成绩为97,下列哪个程序可以实现此功能?( )

A. dict1[1] = 97

B. dict1[1][‘数学’] = 97

C. dict1[95] = 97

D. dict1['数学'] = 97

正确答案:D

答案解析:考察访问字典值的方法,字典取值时使用key。

24、定义字典 dict1 = {'姓名':'王小明', '性别':'男','身高':'150cm', '体重':'40kg'}  保存了小明的个人信息,

输入如下程序并执行后,

dict1['爱好'] = '篮球'

dict1['体重'] = '42kg'

del dict1['性别']

请问字典dict1中的内容为?( )

A. {'姓名':'王小明', '性别':'男','身高':'150cm', '体重':'40kg'}

B. {'姓名':'王小明', '性别':'男','身高':'150cm', '体重':'40kg', '爱好': '篮球'}

C. {'姓名':'王小明', '身高': '150cm', '体重': '40kg', '爱好': '篮球'}

D. {'姓名':'王小明', '身高': '150cm', '体重': '42kg', '爱好': '篮球'}

正确答案:D

答案解析:考察字典的内容的新增、修改和删除。

25、小明用Python编写了一个狗狗与人类年龄的转化程序如下,

age = int(input("请输入狗狗年龄: "))

print("狗狗与人类年龄转换")

if age < 0:  

   print("请输入大于0的年龄!")

elif age == 1:  

   print("约等于人类年龄14岁")

elif age == 2:  

   print("约等于人类年龄22岁")

elif age > 2:

   human = 22 + (age -2)*5

   print("约等于人类年龄: ", human)

假设小明家狗狗现在4岁,请问相当于人类年龄几岁?( )

A. 14

B. 22

C. 31

D. 32

正确答案:D

答案解析:考察条件判断语句if-elif-elif 和 简单计算,输入4时,计算 22 + (4-2)*5 = 32,故选D。

二、判断题

26、元组和列表都属于序列类型,它们的元素都有下标,元素和长度都是可变的。( )

正确答案:错

答案解析:列表可变,元组固定。

27、while()无限循环常常与if条件结构和break语句结合起来使用。( )

正确答案:对

答案解析:while语句可实现无限循环的功能。若没有条件结合break语句退出程序,则会陷入程序的死循环。

28、元组的元素不能被修改。( )

正确答案:对

答案解析:元组是不可变的。

29、在Python中,for循环与while循环都可以用于遍历序列(如列表、元组、字符串等)中的元素。( )

正确答案:错

答案解析:for循环在Python中常用于遍历序列中的元素,如列表、元组、字符串等。while循环一般用于在条件满足时重复执行代码块,只要条件为真,就会一直循环下去,也可以通过设置变量i=0,通过下标 i+=1 的方式遍历列表元素。

30、已知score=93.2,那么代码 print("本次数学期末考试,本班平均分为%d" % (score)) 的写法是正确的。( )

正确答案:错

答案解析:已知score=93.2,提示score是浮点型数据,代码print("本次数学期末考试,本班平均分为%d" % (score)) 中的%d应为%f才能正确显示。

31、字典的主要操作是依据键来存储和读取值。( )

正确答案:对

答案解析:字典中值的使用是通过键值对的形式进行的,本题说法正确。

32、while循环不断地运行,直到指定的条件满足为止。( )

正确答案:错

答案解析:while循环满足循环条件时不断地运行,直到指定的条件不满足为止,故错误。

33、用min()函数可以找到字符串中最大的字符。( )

正确答案:错

答案解析:使用min()函数可以找到字符串中最小的字符。

34、列表(list)是一个存储空间,可以存储一个元素,也可以存储多个元素。( )

正确答案:对

答案解析:

35、要检查两个人的年龄都不小于21岁,可以使用下面的条件语句。( )

age_0 = 22

age_1 = 18

if age_0 >= 21 and age_1 >= 21:

   print('两个人年龄都不小于21岁!')

正确答案:对

答案解析:不小于是大于等于,两个条件同时满足使用 and,故正确。

三、编程题

36、成绩分级

期末数学考试满分为100分,需要将同学们的得分转换为A、B、C、D等级的形式进行期末素质考核评估,大于等于90分为A,大于等于80分小于90分为B,大于等于60分小于80分为C,小于60分为D,现在请编写一段程序,当输入成绩时(成绩为整数),程序能给出相应的等级,并且可循环输入成绩,直至输入字符“E”时结束程序。

友情提示:

由于考试平台暂不支持eval()命令,同学们可以选用其他命令;当然如果您使用了,只要程序是正确的,我们阅卷时依然按照正常处理。

参考程序:

while True:
   s = input("请输入分数:")
   if s == 'E':
       break
   score = int(s)
   if score >= 90 and score <= 100:
       print('A')
   elif score >= 80 and score < 90:
       print('B')
   elif score >= 60 and score < 80:
       print('C')
   elif score >= 0 and score < 60:
       print('D')
   else:
       print("输入错误,请重新输入!")

评分标准:

(1)用input()函数获取输入值;(2分)

(2)用int()或eval()函数对输入值进行了数字类型转换;(2分)

(3)使用了while无限循环;(2分)

(4)用到了if流程控制语句;(4分,每种情况1分)

(5)能够根据成绩进行正确的成绩分级;(4分,每种情况1分)

(6)能够通过输入字符“E”结束程序。(1分)

37、

飞花令

“飞花令”是中国人在饮酒时的一种助兴游戏,飞花令名字起源于诗词之中,因唐代诗人韩翃的《寒食》“春城无处不飞花”而得名。飞花令的规则是,参与者轮流说出含有特定字的诗句,这些字通常都是事先约定的,称为“雅令”,如“花”、“春”等。请用Python程序来实现飞花令。

功能实现:

(1)程序开始运行时,提示用户输入本局雅令,即约定好的关键字;

(2)输入完雅令后,回车后进入后面的输入诗句环节,

(3)提示用户输入含有雅令的诗句,诗句长度为5个字或者7个字;

(4)多个句子答案用" 、"分隔,并且将每一句转换成列表中的元素;

(5)回车代表结束诗句输入;

(6)统计雅令出现的次数,雅令出现一次计一分;

(7)格式化输出最后得分。

输入输出样例:

参考程序:

key = input('请输入本局的雅令:')
ans = input('输入五言或七言诗句,不同诗句用“、”隔开:').split('、')
count = 0
for x in ans:
   if (key in x) and (len(x) == 5 or len(x) == 7):
       count += 1
print('你得了{}分!'.format(count))

评分标准:

(1)有input输入语句;(1分)

(2)能够使用split()方法把字符串分割成列表;(2分)

(3)能够遍历列表;(2分)

(4)能够判断雅令是否在列表中的字符串内;(4分)

(5)能够计算列表中每个字符串的长度;(4分)

(6)能够进行格式化输出。(2分)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值