您现在的位置是:首页 > 技术教程 正文

中国电子学会2023年09月份青少年软件编程Python等级考试试卷二级真题(含答案)

admin 阅读: 2024-03-24
后台-插件-广告管理-内容页头部广告(手机)

2023-09 Python二级真题

分数:100

题数:37

测试时长:60min

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

1.

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

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

A.宸宸

B.杭杭

C.玉玉

D.州州

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

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

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

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

A.11

B.10

C.9

D.8

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

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

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

A.8个

B.5个

C.6个

D.4个

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

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

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

A.

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

B.

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

C.

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

D.

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

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

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

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

A.['华东', '华西', '华中', '华南', '华北']

B.['华东', '华中', '华西', '华南', '华北']

C.['华东', '华西', '华中', '华南']

D.['华西', '华中', '华南', '华北']

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

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

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

A.2

B.3

C.4

D.5

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

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

A.numbers[1]

B.numbers[2]

C.numbers[3]

D.numbers[4]

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

A.del d['浙江']

B.d.clear()

C.del d['山东']

D.d.pop('山东')

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

A.for循环可以用于遍历列表中的所有元素

B.while循环满足循环条件时不断地运行,直到指定的条件不满足为止

C.Python中可以使用do…while循环

D.break和continue语句都可以用在for循环和while循环中

10.执行以下程序代码

  1. score = eval(input("请输入成绩:"))
  2. if score > 0 and score < 60:
  3.     print("不及格")
  4. elif score >= 60 and score <=100:
  5.     print("及格")
  6. else:
  7.     print("请输入正确的成绩")

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

A.及格

B.不及格

C.请输入正确的成绩

D.60

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

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

A.字典是通过key(键)来进行访问的,跟列表、元组不同

B.字典没有头上标和尾下标,跟value对应的就只有key(键)

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

D.用Python内置函数是可以删除字典当中的元素的,整个字典也可以被清空或者删除

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

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

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

A.2

B.6

C.1

D.5

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

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

A.Python可以通过for和while循环,实现遍历和各种循环等功能

B.break是用来跳出自己所在的整个循环体,执行循环后面的语句

C.continue结束整个循环过程,不再判断循环的执行条件,继续顺序执行循环后面的语句

D.遍历循环中的遍历结构可以是字符串或者range()函数等

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

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

A.如果条件判断语句永远为 true,循环将会无限的执行下去

B.当判断条件为假(false) 时,循环结束

C.在while 语句中,"判断条件"不可以是个常值

D.执行语句可以是单个语句或语句块。判断条件可以是任何表达式等

答案解析:while 语句时,"判断条件"可以是个常值,表示循环必定成立。

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

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

A.晚安玛卡巴卡

B.晚安依古比古

C.晚安唔西迪西

D.晚安name2

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

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

A.d = {}

B.d = {'葡萄', 20}

C.d = {'葡萄':20}

D.d = {'葡萄':20, '西瓜':12}

答案解析:B 不是一个字典,字典的元素都是成对出现的,中间用冒号隔开。

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

A.print(d.values())

B.print(d.keys())

C.print(d.items())

D.以上三个语句都无法实现

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

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

A.tp=( )

B.tp=('sun')

C.tp=('star',)

D.tp=('sun','star','moon')

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

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

A.列表创建后不能被修改

B.列表中各元素的类型必须相同

C.列表不能用下标访问

D.通过方括号[]可以创建列表

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

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

A.animal[0]

B.animal[1]

C.animal.reverse()

animal[4]

D.animal.reverse()

animal[-1]

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

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

A.元组不可以被修改

B.Python中元组使用小括号和逗号表示

C.元组中的元素要求是相同类型

D.一个元组可以作为另一个元组的元素,可以采用多级索引获取信息

答案解析:元组中的元素可以是不同类型,所以C是错误的

22.对 s = "www.baidu.com" 执行 s.split(".")后的结果是?(B )

A.www.baidu.com

B.["www", "baidu", "com"]

C."www.baidu.com"

D.wwwbaiducom

答案解析:split是分割字符串,通过split,我们可以将字符串分割成列表。

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

  1. s = 0
  2. for i in range(10):
  3.     s += 1
  4.     if i * i < 50:
  5.         break
  6. print(s)

A.0

B.1

C.7

D.3

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

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

  1. list0 = [5, 4, 3, 2, 2]
  2. list0.remove(2)
  3. list0.insert(2, 6)
  4. 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]

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

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

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

A.Good workGood workGood work

B.workworkwork

C.work work work

D.kkk

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

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

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

答案解析:元组一旦被创建就不能被修改

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

答案解析:元组中的元素不可改变,元组对象没有sort属性。

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

答案解析:[]是空列表,因为列表中的元素个数是0,但是,[(),{}]不是空列表,这个列表中包含两个元素,一个元素是空元组,一个元素是空列表。


29.

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

上述代码的功能是:

在字典dic_1中添加一个键值对,'键值4': '西瓜',输出添加后的字典,其值是:

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

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


30.

  1. for i in range(5):
  2.     print(i)

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

1

2

3

4

5

答案解析:range(5)的取值范围从0开始,到4结束。


31.

  1. s="Python";
  2. for i in s:
  3.     print(i);

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

(注意:是横排的Python)

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

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

  1. for i in range(5):
  2.     print(i)

34.'abc' - 'a' 的结果是 'bc'。(错 )

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

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

36.最小公倍数

最小公倍数是指两个或多个整数公有的倍数中,最小的那个数。例如,2 和 3 的公倍数有 6、12、18 等等,其中最小的是 6,因此 6 就是 2 和 3 的最小公倍数。

最小公倍数在数学中有广泛的应用,例如在分数的化简、约分、比较大小等问题中都需要用到最小公倍数。

请你编写一个程序,程序可以输入两个正整数,输出它们的最小公倍数。

样例输入:

请输入第一个正整数:

6

请输入第二个正整数:

8

样例输出:

24

参考程序1:

  1. a = int(input("请输入第一个正整数:"))
  2. b = int(input("请输入第二个正整数:"))
  3. # 穷举法求最小公倍数
  4. lcm = max(a, b)
  5. while True:
  6.     if lcm % a == 0 and lcm % b == 0:
  7.         break
  8.     lcm += 1
  9. print(lcm)

参考程序2:

  1. a = int(input("请输入第一个正整数:"))
  2. b = int(input("请输入第二个正整数:"))
  3. # 求最大公约数
  4. m = a
  5. n = b
  6. while n != 0:
  7.     r = m % n
  8.     m = n
  9.     n = r

# 求最小公倍数

lcm = a * b // m

print(lcm)

评分标准:

(1)正确输入数字并转化成整型;(2 分)

(2)正确判断出公倍数;(2 分)

(3)正确使用循环结构和打破循环的 break 语句;(3 分)

(4)能够将最小公倍数打印在终端区。(3 分)

37.中国电子学会主办的“全国青少年信息素养大赛”总决赛要开始了,组委会的老师要统计各个赛项报名的人数。请帮着写一个程序,实现该功能:统计时,输入各项编号表示对应的比赛:

1:Python编程挑战赛

2:开源鸿蒙主题赛

3:智慧物流挑战赛

0:表示录入完毕

要求:

一、循环执行

二、当输入错误数据,可以提示“没有此编号请重复输入”;

三、当输入0后,自动统计所有项目的参赛人数,并输出出来;如下面的案例:

输入样例:

请输入赛项编号:

1

请输入赛项编号:

2

请输入赛项编号:

3

请输入赛项编号:

2

请输入赛项编号:

1

请输入赛项编号:

1

请输入赛项编号:

0

输出样例:

Python编程挑战赛:3人

开源鸿蒙主题赛:2人

智慧物流挑战赛:1人

参考程序1:

  1. d={'Python编程挑战赛':0,'开源鸿蒙主题赛':0,'智慧物流挑战赛':0}
  2. while True:
  3.     num=input('请输入赛项编号:')
  4.     if num=='1':
  5.         d['Python编程挑战赛']+=1
  6.     elif num=='2':
  7.         d['开源鸿蒙主题赛']+=1
  8.     elif num=='3':
  9.         d['智慧物流挑战赛']+=1
  10.     elif num=='0':
  11.         break
  12.     else:
  13.         print('没有此编号请重新输入')
  14.         continue
  15. print('统计结果如下:')
  16. for i in d:
  17.     print(i+':'+str(d[i])+'人')

参考程序2:

  1. sum1=0  #Python编程挑战赛
  2. sum2=0  #开源鸿蒙主题赛
  3. sum3=0  #智慧物流挑战赛
  4. while True:
  5.     num=input('请输入赛项编号:')
  6.     if num=='1':
  7.         sum1+=1
  8.     elif num=='2':
  9.         sum2+=1
  10.     elif num=='3':
  11.         sum3+=1
  12.     elif num=='0':
  13.         break
  14.     else:
  15.         print('没有此编号请重新输入')
  16.         continue
  17. print('统计结果如下:')
  18. print('Python编程挑战赛:'+str(sum1))
  19. print('开源鸿蒙主题赛:'+str(sum2))
  20. print('智慧物流挑战赛:'+str(sum3))

评分标准:

(1)有循环语句,可以重复输入数据;(4分)

(2)当输入0,循环可以正确的结束;(2分)

(3)有条件判断语句,可以统计对应赛项的人数;(4分)

(4)当输入错误数据,可以提示“没有此编号请重复输入”;(4分)

(5)可以按照正确的格式打印;(2分)

(6)程序运行结果正确。(4分)

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索