2023年09月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

2023年09月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试_第1张图片

Python等级考试(1~6级)全部真题・点这里

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

第1题

yyh=[2023,'杭州亚运会',['拱宸桥','玉琮''莲叶']]
jxw=yyh[2][0]
print(jxw[1]*2)

以上代码运行结果是?( )

A: 宸宸
B: 杭杭
C: 玉玉
D: 州州

答案:A

jxw=yyh[2][0],jxw的值是“拱宸桥”,jxw[1]的值是“宸”,所以jww[1]*2的值是“宸宸”

第2题

阿宝在学习Python语言编程,他写了一个程序可以实现输入月份数字就可以输出2023年该月的天数。 程序如下:

monthdays=[0,31,28,31,30,31,30,31,31,30,31,30,31]
m=int(input())
print('2023年'+str(m)+'月有'+str(monthdays[m])+'天。')

要想得到2023年9月的天数,应该在终端输入的数字是?( )

A: 11
B: 10
C: 9
D: 8

答案:C

列表的下标是从0开始的,但是week列表在定义的时候,第一个元素是0(从而排除了下标为0号的列表位置的月份),所以9月份的下标仍然是9,选择C。

第3题

下面这个列表中,包含几个元素?( )

list = ['a', ['bb', 'cc', 'dd'], 'e', ['ff', 'gg'], 'h']
print(list)

A: 8个
B: 5个
C: 6个
D: 4个

答案:B

列表可以嵌套 列表中的元素同样可以是一个列表。list 这个列表中有 5 个元素,其中3 个是字符型,2个是列表,list列表中又嵌套了2个列表,在判断列表中的嵌套时,我们主要是根据[]来进行判断:嵌套的列表共占元素的一个位置。

第4题

使用下列哪几个命令可以把列表list1变成列表list2?( )

list1 = ['苹果', '樱桃', '西瓜', '香蕉', '葡萄', '菠萝', '芒果', '火龙果']
list2 = ['苹果', '樱桃', '西瓜', '香蕉', '葡萄', '菠萝', '桑葚', '番石榴']

A:

del list1[6:8]
list1 += ['桑葚', '番石榴']

B:

del list1[6:7]
list1 += ['桑葚', '番石榴']

C:

del list1[6:8]
list1.append(['桑葚', '番石榴'])

D:

del list1[6:7]
list1.append(['桑葚', '番石榴'])

答案:A

从列表中删除元素,只需要使用 del 就可以了。 del 列表名[]
在 Python 中,我们使用+向列表中添加元素,添加的元素会自动的被添加到列表尾部:列表名 +=[元素1,元素2,元素3,…,元素n]
除了使用+,append0 也可以为列表添加元素,和+一样,也是在列表的结尾处添加元素,但是却是作为一个整体添加.所以答案应该为:A

第5题

以下程序的输出结果是?( )

list = ['华东','华西','华南','华北']
list.insert(2,'华中')
list.pop()
print(list)

A: [‘华东’, ‘华西’, ‘华中’, ‘华南’, ‘华北’]
B: [‘华东’, ‘华中’, ‘华西’, ‘华南’, ‘华北’]
C: [‘华东’, ‘华西’, ‘华中’, ‘华南’]
D: [‘华西’, ‘华中’, ‘华南’, ‘华北’]

答案:C

本题考查列表的插入和从列表的指定位置删除元素,2表示将元素插入至原列表索引为2的元素之前,.pop()方法无参数时默认删掉最后一个元素。

第6题

下列程序运行后,输出的结果应该是哪个选项?( )

t = ('s', 'a', 'a', 'r', 5)
print(t.index('a')+t.count('a'))

A: 2
B: 3
C: 4
D: 5

答案:B

获取指定元素在元组中出现的次数count(),index()方法:获取指定元素的下标(就近原则,从左往右,找到第一个就结束)

第7题

numbers = [1 , 2 , 3 , 4],以下哪一项可以用来访问numbers中的第三个元素?( )

A: numbers[1]
B: numbers[2]
C: numbers[3]
D: numbers[4]

答案:B

列表中的元素索引从0开始计数

第8题

d = {“山东”:“青岛”, “浙江”:“杭州”, “安徽”:“芜湖”} ,请问删除d中’山东’对应的数据值的函数或方法是?( )

A: del d[‘浙江’]
B: d.clear()
C: del d[‘山东’]
D: d.pop(‘山东’)

答案:C

删除字典d中’山东’对应的数据值的方法是del d[‘山东’]

第9题

以下关于循环的说法,不正确的是?( )

A: for循环可以用于遍历列表中的所有元素
B: while循环满足循环条件时不断地运行,直到指定的条件不满足为止
C: Python中可以使用do…while循环
D: break和continue语句都可以用在for循环和while循环中

答案:C

Python中只有for循环和while循环两种循环,do…while循环不可用于python,故本题答案选C.

第10题

执行以下程序代码

score = eval(input("请输入成绩:"))
if score > 0 and score < 60:
    print("不及格")
elif score >= 60 and score <=100:
    print("及格")
else:
    print("请输入正确的成绩")

当输入60时,输出结果是?( )

A: 及格
B: 不及格
C: 请输入正确的成绩
D: 60

答案:A

该题考查程序的多选择分支结构,因为60介于60(含)和100之间,故输出结果为“及格”

第11题

下列哪个说法不正确的是?( )

A: 字典是通过key(键)来进行访问的,跟列表、元组不同
B: 字典没有头上标和尾下标,跟value对应的就只有key(键)
C: Python中可以通过重新给字典当中的key赋值的方式修改对应的value,不能通过新增key的方式来添加新的元素
D: 用Python内置函数是可以删除字典当中的元素的,整个字典也可以被清空或者删除

答案:C

Python中可以通过重新给字典当中的key赋值的方式修改对应的value,也可以通过新增key的方式来添加新的元素

第12题

. 请问此程序运行后的结果是?( )

s=1
for i in range(1,4,3):
    s = s+i
print(s)

A: 2
B: 6
C: 1
D: 5

答案:A

range(1,4,3) 这个包含的数据是1,不包含4。所以: 1+1=2

第13题

关于Python循环结构的说法,下列哪个是错误的?( )

A: Python可以通过for和while循环,实现遍历和各种循环等功能
B: break是用来跳出自己所在的整个循环体,执行循环后面的语句
C: continue结束整个循环过程,不再判断循环的执行条件,继续顺序执行循环后面的语句
D: 遍历循环中的遍历结构可以是字符串或者range()函数等

答案:C

continue 语句跳出本次循环,而break跳出整个循环。即break才是结束整个循环过程

第14题

下面几个有关流程控制的说法,那个是错误的?( )

A: 如果条件判断语句永远为 true,循环将会无限的执行下去
B: 当判断条件为假(false) 时,循环结束
C: 在while 语句中,"判断条件"不可以是个常值
D: 执行语句可以是单个语句或语句块。判断条件可以是任何表达式等

答案:C

while 语句时,"判断条件”可以是个常值,表示循环必定成立

第15题

运行下面的代码,输出的结果是?( )

name1 = '玛卡巴卡'
name2 = '依古比古'
name3 = '唔西迪西'
print('晚安' + name2)

A: 晚安玛卡巴卡
B: 晚安依古比古
C: 晚安唔西迪西
D: 晚安name2

答案:B

+号可以将两个字符串拼接在一起,name2 中的内容是’依古比古’, 打印的结果就是’晚安依古比古’

第16题

下面代码中,不能创建一个字典的是?( )

A: d = {}
B: d = {‘葡萄’, 20}
C: d = {‘葡萄’:20}
D: d = {‘葡萄’:20, ‘西瓜’:12}

答案:B

B 不是一个字典,字典的元素都是成对出现的,中间用冒号隔开

第17题

字典d = {“苹果”:“apple”,“香蕉”:“banana”,“橘子”:“orange”,“桃子”:“peach”}中按键值对的形式储存了部分水果的中英文名,以下能够只输出水果英文名的语句是?( )

A: print(d.values())
B: print(d.keys())
C: print(d.items())
D: 以上三个语句都无法实现

答案:A

字典类型操作函数d.values()返回字典中所有的值信息,d.keys()返回字典中所有的键信息,d.items()返回字典中所有的键值对信息;水果的英文名都属于该字典的值。

第18题

下列定义元组的语句,不正确的是?( )

A: tp=( )
B: tp=(‘sun’)
C: tp=(‘star’,)
D: tp=(‘sun’,‘star’,‘moon’)

答案:B

使用()可以创建元组,空括号创建空元组,但是创建只有一个元素的元组时,需要在第一个元素的后面加逗号

第19题

下列关于列表的说法,正确的是?( )

A: 列表创建后不能被修改
B: 列表中各元素的类型必须相同
C: 列表不能用下标访问
D: 通过方括号[]可以创建列表

答案:D

列表是一种序列类型,创建后可以随意被修改,列表中各元素类型可以不同,可以用下标进行访问;使用方括号[]或list可以创建列表,元素间用逗号分隔。

第20题

已知列表animal = [‘cat’,‘dog’,‘monkey’,‘tiger’,‘lion’],要想得到’cat’的输出结果,以下哪个选项的语句是不正确的?( )

A: animal[0]
B: animal[1]
C:

animal.reverse()
animal[4]

D:

animal.reverse()
animal[-1]

答案:B

列表元素的索引是从0开始的,所以获取第一个元素’cat’需用animal[0]而不是animal[1];reverse0方法的作用是将列表中的元素反转,animal列表反转后,第一个元素’cat’ 变成了最后一个元素,可以通过索引值4或者逆序索值-1进行访问。所以本题答案为B。

第21题

关于Python的元组类型,以下选项中描述错误的是?( )

A: 元组不可以被修改
B: Python中元组使用小括号和逗号表示
C: 元组中的元素要求是相同类型
D: 一个元组可以作为另一个元组的元素,可以采用多级索引获取信息

答案:C

元组中的元素可以是不同类型,所以C是错误的

第22题

对 s = “www.baidu.com” 执行 s.split(“.”)后的结果是?( )

A: www.baidu.com
B: [“www”, “baidu”, “com”]
C: “www.baidu.com”
D: wwwbaiducom

答案:B

split是分割字符串,通过split,我们可以将字符串分割成列表。

第23题

下面代码运行后,输出区打印的内容是?( )

s = 0
for i in range(10):
    s += 1
    if i * i < 50:
        break
print(s)

A: 0
B: 1
C: 7
D: 3

答案:B

第一次循环时,变量 s = 1,i= 0,此时i*i< 50,break语句会终止循环,输出区打印出1

第24题

以下代码执行后输出是?( )

list0 = [5, 4, 3, 2, 2]
list0.remove(2)
list0.insert(2, 6)
print(list0)

A: [5, 4, 3, 6, 2]
B: [5, 4, 3, 2, 6]
C: [5, 4, 3, 2, 6, 2]
D: [5, 4, 6, 3, 2]

答案:D

insert在下标为2的位置插入6,与前面的remove(2)没有关系。所以选D

第25题

执行以下运算后,text2的值是?( )

text1 = "Good work" 
text2 = text1[-1]*3

A: Good workGood workGood work
B: workworkwork
C: work work work
D: kkk

答案:D

下标-1取出最后一个元素即k,乘以3表示重复3次,因此输出kkk

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

第26题

元组一旦被创建就不能被修改。( )

答案:正确

元组一旦被创建就不能被修改

第27题

元组和列表都属于序列类型,他们的元素都有下标,可以调用sort()函数对元组和列表中的元素重新排列。( )

答案:错误

元组中的元素不可改变,元组对象没有sort属性。

第28题

列表是有序的,列表中可以放多个不同类型的元素,列表也可以是空的,[],[(),[]]都是空列表。( )

答案:错误

[ ]是空列表,因为列表中的元素个数是0,但是[(),[]]不是空列表,这个列表中包含两个元素,一个元素是空元组,一个元素
是空列表。

第29题

dic_1 = {'键值1': '苹果', '键值2': '葡萄', '键值3': [11, 22, 33]}
dic_1['键值4'] = '西瓜'
print(dic_1)

上述代码的功能是:
在字典dic_1中添加一个键值对,‘键值4’: ‘西瓜’,输出添加后的字典,其值是:
{‘键值1’: ‘苹果’, ‘键值2’: ‘葡萄’, ‘键值3’: [11, 22, 33],‘键值4’:‘西瓜’} ( )

答案:正确

在字典dic_1中添加一个键值对,‘键值4’:‘西瓜’,输出添加后的字典就是{‘键值1’: ‘苹果’, ‘键值2’: ‘葡萄’, ‘键值3’: [11, 22, 33],‘键值4’:‘西瓜’} ,这句话是正确的。

第30题

for i in range(5):
    print(i)

上述代码的运行结果是( )

1
2
3
4
5

答案:错误

range(5)的取值范围从0开始,到4结束

第31题

s="Python";
for i in s:
    print(i);

上面这个程序段,运行后输出的结果是: Python。( )
(注意:是横排的Python)

答案:错误

上面语句输出的是竖排的Python,而下面语句输出的才是Python:

print(i, end=");

第32题

input() 语句输入的内容,一定是字符串类型的。( )

答案:正确

input()语句输入的内容,一定是字符串类型的

第33题

下列程序在运行过程中,变量 i 的值不可能是5。( )

for i in range(5):
    print(i)

答案:正确

变量i的值分别会取0、1、2、3、4,不会取到5.

第34题

‘abc’ - ‘a’ 的结果是 ‘bc’。( )

答案:错误

字符串不能进行减法操作,代码会报错

第35题

if、elif和else后面均应写明条件以便判断True或False。( )

答案:错误

else后面不需要条件语句

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

第36题

最小公倍数
最小公倍数是指两个或多个整数公有的倍数中,最小的那个数。例如,2 和 3 的公倍数有 6、12、18 等等,其中最小的是 6,因此 6 就是 2 和 3 的最小公倍数。
最小公倍数在数学中有广泛的应用,例如在分数的化简、约分、比较大小等问题中都需要用到最小公倍数。
请你编写一个程序,程序可以输入两个正整数,输出它们的最小公倍数。
样例输入:
请输入第一个正整数:
6
请输入第二个正整数:
8
样例输出:
24
友情提示:
由于考试平台暂不支持eval()命令,同学们可以选用其他命令;当然如果您使用了,只要程序是正确的,我们阅卷时依然按照正常处理。

答案:

下面是一个计算两个正整数最小公倍数的Python程序:

def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a

def lcm(a, b):
    return (a * b) // gcd(a, b)

# 输入两个正整数
num1 = int(input("请输入第一个正整数:"))
num2 = int(input("请输入第二个正整数:"))

# 计算最小公倍数
result = lcm(num1, num2)

# 输出最小公倍数
print("最小公倍数:", result)

程序中定义了两个函数 gcd(a, b)lcm(a, b)

函数 gcd(a, b) 用于计算两个数的最大公约数,采用欧几里得算法实现。

函数 lcm(a, b) 利用最大公约数计算两个数的最小公倍数,通过 (a * b) // gcd(a, b) 计算得到。

然后,程序从用户输入中获取两个正整数 num1num2

接下来,使用 lcm() 函数计算 num1num2 的最小公倍数,并将结果存储在 result 变量中。

最后,程序输出最小公倍数。

根据给定的样例输入,程序将输出 24,它是 68 的最小公倍数。

第37题

中国电子学会主办的“全国青少年信息素养大赛”总决赛要开始了,组委会的老师要统计各个赛项报名的人数。请帮着写一个程序,实现该功能:统计时,输入各项编号表示对应的比赛:
1:Python编程挑战赛
2:开源鸿蒙主题赛
3:智慧物流挑战赛
0:表示录入完毕
要求:
一、循环执行
二、当输入错误数据,可以提示“没有此编号请重复输入”;
三、当输入0后,自动统计所有项目的参赛人数,并输出出来;如下面的案例:

输入样例:
请输入赛项编号:
1
请输入赛项编号:
2
请输入赛项编号:
3
请输入赛项编号:
2
请输入赛项编号:
1
请输入赛项编号:
1
请输入赛项编号:
0
输出样例:
Python编程挑战赛:3人
开源鸿蒙主题赛:2人
智慧物流挑战赛:1人
友情提示:
由于考试平台暂不支持eval()命令,同学们可以选用其他命令;当然如果您使用了,只要程序是正确的,我们阅卷时依然按照正常处理。

答案:

下面是一个实现统计报名人数的Python程序:

competitions = {
    1: "Python编程挑战赛",
    2: "开源鸿蒙主题赛",
    3: "智慧物流挑战赛"
}

participants = {competition: 0 for competition in competitions.values()}

while True:
    competition_id = int(input("请输入赛项编号:"))
    
    if competition_id == 0:
        break
    
    if competition_id in competitions:
        participants[competitions[competition_id]] += 1
    else:
        print("没有此编号请重复输入")

# 输出各个赛项的参赛人数
for competition, count in participants.items():
    print("{}:{}人".format(competition, count))

程序中使用了两个字典,competitions 存储赛项编号和名称的对应关系,participants 存储各个赛项的参赛人数,初始值都为 0。

程序通过一个循环不断接受用户输入的赛项编号,当输入为 0 时,跳出循环。

在循环中,程序判断用户输入的赛项编号是否存在于 competitions 字典中,如果存在,则通过赛项名称在 participants 字典中对应的值加 1,表示该赛项有一人报名。如果不存在,则输出提示信息。

循环结束后,程序输出各个赛项的参赛人数。

根据给定的样例输入,程序将输出如下结果:

Python编程挑战赛:3人
开源鸿蒙主题赛:2人
智慧物流挑战赛:1人

这表示参加了 Python编程挑战赛的人数为 3,开源鸿蒙主题赛的人数为 2,智慧物流挑战赛的人数为 1。

你可能感兴趣的:(python,等级考试,电子学会)