当前位置: 首页 > article >正文

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

 更多真题在线练习系统:历年真题在线练习系统

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

1. 以下选项中,哪一项转换后对应十进制数不是10?( )

A. 0b1010

B. 0o12

C. 0xa

D. 0d11

标准答案:D

试题难度:一般

试题解析:A选项,二进制1010转换为十进制为10;B选项,八进制12转换为十进制为10;C选项,十六进制a转换为十进制为10。

2. 以下选项中不会报错的是?( )

A. a='10'+0

B. int('X')

C. b=10/0

D. float(1.2)

标准答案:D

试题难度:一般

试题解析:A选项,'10'为字符串,0为整型,不能相加,错误提示TypeError;B选项,X是字母,不能转整型,错误提示ValueError;C选项,0不能为除数,错误提示ZeroDivisionError;D选项,运行结果为1.2,不会报错。

3. 将十进制数52转换为二进制数时,该二进制数的位数是?( )

A. 3

B. 4

C. 5

D. 6

标准答案:D

试题难度:容易

试题解析:将52除2取余,逆序输出,得到的答案是110100。

4. 下面哪个数值和其他不一样?( )

A. int("0O30",8)

B. (18)16

C. (25)10

D. (11000)2

标准答案:C

试题难度:一般

试题解析:(30)8=(18)16=(24)10=(11000)2,故选C。

5. 将十进制数522转换为十六进制数,最低位上的数是?( )

A. 8

B. 9

C. A

D. B

标准答案:C

试题难度:一般

试题解析:将522除以16取余,余数为十进制10,转为十六进制是A。

6.以下代码的运行结果是?( )

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

result = list(map(str, numbers) )

print(result)

A. 1, 2, 3, 4, 5

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

C. None

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

标准答案:B

试题难度:一般

试题解析:map()函数返回一个迭代器,map的第1个参数是str,所以会把numbers列表中的每个元素转换成字符串类型,使用list转换后的结果是列表,所以选择B选项。

7. divmod(134, 4)的结果是?( )

A. [33, 2]

B. (33, 2)

C. (2, 33)

D. [2, 33]

标准答案:B

试题难度:一般

试题解析:134除以4的结果是33余2,divmod()函数返回一个元组,元组中第1个数是除法的商,第2个数是余数,所以本题选择B。

8. 函数round(3.576, 2) 的返回结果是?( )

A. 3.50

B. 3.58

C. 3.57

D. 4.00

标准答案:B

试题难度:一般

试题解析:round() 函数用于对浮点数进行四舍五入。当指定小数位数为2时,3.576 会四舍五入到 3.58,选择B。

9. 函数bool(None)的返回结果是?( )

A. True

B. False

C. None

D. 0

标准答案:B

试题难度:容易

试题解析:None的布尔值是False。

10. 以下哪个函数可以用来将列表转换为集合?( )

A. list()

B. dict()

C. tuple()

D. set()

标准答案:D

试题难度:容易

试题解析:set函数的功能是将括号中的参数转换为集合。

11. 在Python中,以下哪个表达式将返回False?( )

A. any([1, 2, 0])

B. any(['', 'hello', '!'])

C. any([{}, {1:2}, {3:4}])

D. any([False, False, False])

标准答案:D

试题难度:较难

试题解析:any()函数在可迭代对象中找到任何为True的元素时返回True。选项D中的所有元素都是False,因此any([False, False, False])将返回False。

12. 以下哪个表达式将返回字符串'123'?( )

A. str(123.456)

B. int('123.456')

C. str(123)

D. float('123')

标准答案:C

试题难度:一般

试题解析:

str(123)将整数123转换为其字符串表示形式'123'。

选项A将返回一个包含更多数字的字符串(即小数点后的数字),

选项B会引发ValueError,因为'123.456'不能被直接转换为整数,

选项D将返回一个浮点数而不是字符串。

13. 下列哪个选项是用正确的方式来处理 input() 函数返回的字符串,以便将其转换为一个整数?( )

A. num = input("请输入一个数字:")

B. num = int(input("请输入一个数字:"))

C. num = str(input("请输入一个数字:"))

D. num = float(input("请输入一个数字:"))

标准答案:B

试题难度:一般

试题解析:为了将 input() 函数返回的字符串转换为一个整数,我们需要使用 int() 函数。选项 A 只是将输入作为字符串存储,选项 C 将输入转换为字符串(这是多余的),选项 D 将输入转换为浮点数。因此,选项 B 是正确的。

14. 下列程序运行的结果是?( )

try:

    a=6

    b=0

    c=a/b

    print(c)

except:

    print('error!')

A. 6

B. 0

C. c

D. error!

标准答案:D

试题难度:容易

试题解析:考核try-except进行异常处理,因为进行除法时除数为0,try代码块剩余代码被忽略,执行except处代码,所以运行结果为D。

15. 函数abs(-2.6)的返回值是?( )

A. -2.6

B. 2.6

C. 2

D. 6

标准答案:B

试题难度:容易

试题解析:考核abs(),负实数的绝对值为正实数。

16. 函数ord("C")的返回值是什么?( )

A. 48

B. 57

C. 67

D. 99

标准答案:C

试题难度:容易

试题解析:考核ord(),"A"的ASCII码为65,"C"的ASCII码为67。

17. 以下哪个选项不是算法的基本结构?( )

A. 顺序结构

B. 分支结构

C. 循环结构

D. 查找结构

标准答案:D

试题难度:容易

试题解析:算法的3种基本结构是顺序结构、分支结构、循环结构。

18. 超市购物促销:购物满49元减5元,购物满99元减15元,根据所购物品金额求优惠率。解决此问题的合适算法是?( )

A. 解析算法

B. 枚举算法

C. 排序算法

D. 递归算法

标准答案:A

试题难度:容易

试题解析:利用解析算法解决此问题。

19. 关于二分查找算法,下列描述错误的是?( )

A. 二分查找的前提是被查找的数据序列是有序的

B. 二分查找的次数难以确定,常用while语句实现循环

C. 二分查找最坏的情况是查找n次结束

D. 二分查找的区间范围会逐渐缩小

标准答案:C

试题难度:一般

试题解析:考核二分查找。二分查找最坏的情况是查找log2n+1次结束。

20. Python表达式abs(int(-4.6))的计算结果是?( )

A. 4

B. -4

C. 5

D. -5

标准答案:A

试题难度:容易

试题解析:int()表示取整,即小数点前的整数,abs()表示求绝对值,因此-4的绝对值为4。

21. 小明编写了下列4行代码,请问,代码运行到最后,屏幕上打印出来的结果是?( )

a = ['红','橙','黄']

b = [1,2,3]

c = [b,a]

print(c[1][0])

A. 2

B. 1

C. 橙

D. 红

标准答案:D

试题难度:容易

试题解析:考查学生对嵌套列表中,元素位置的理解。同时考查学生对用已有列表创建新列表的理解。

22.

下面代码从"成绩.csv"文件中读出数据,并将数据以列表形式存储。请问,划线处的代码应该为?( )

 f=open('成绩.csv','r')

a=f.read().strip().split(______)

f.close()

A. '。'

B. ','

C. '\t'

D. '\n'

标准答案:B

试题难度:容易

试题解析:应为英文的',',使用英文逗号进行数据分隔。

23. 以下代码将建立一个名为"姓氏.csv"的文件,划线处的代码应该为?( )

a=['赵','钱','孙','李','周','吴','郑','王']

f=open('姓氏.csv',______)

f.write(','.join(a)+'\n')

f.close()

A. ‘W’

B. 'R'

C. 'w'

D. 'r'

标准答案:C

试题难度:容易

试题解析:小写的w,可新建文件并写入内容。

24. 如下图所示,有一个名为"价格.csv"的文件。小明针对这个文件编写了5行代码。

请问,代码运行到最后,打印在屏幕上的结果是?( )

with open('价格.csv', 'r', encoding='utf-8') as f:

    for line in f.readlines():

        a = line.strip().split(",")

        if a[1] == '9' :

            print(a[0])

A. 西瓜

B. 椰子

C. 桔子

D. 香梨

标准答案:B

试题难度:一般

试题解析:本题考查学生对列表切片中,每个数据位置的理解 。此题中的a[1],应该对应椰子的价格,所以正确答案是B。

25.

如下所示的2行代码,最后print()函数打印出来的结果是?( )

c = [['赵大',21,'男','北京'],['钱二',20,'男','西安'],['孙三',18,'女','南京'],['李四',20,'女','杭州']]

print(c[1][3])

A. 男

B. 北京

C. 西安

D. 女

标准答案:C

试题难度:容易

试题解析:考查学生对二维列表中,每个列表值顺序的理解。

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

26. hex()函数可以将十进制数转换成十六进制数。在Python交互式编程环境下,执行语句hex(11)后,显示的运行结果是'b'。( )

A. 正确

B.错误

标准答案:错误

试题难度:一般

试题解析:hex(11)可以将十进制数11转换成十六进制数,但十六进制数表示为0xb。

27. 二进制数、八进制数与十六进制数的末位如果是“1”,各转换为十进制数后都是奇数。( )

A. 正确

B.错误

标准答案:正确

试题难度:一般

试题解析:二进制、八进制、十六进制末位数决定该数奇偶。

28. 使用with语句打开文件并处理文件后,必须使用close()函数关闭文件,以确保所有数据都被写入磁盘并释放系统资源。( )

A. 正确

B.错误

标准答案:错误

试题难度:一般

试题解析:在Python中,使用 with 语句打开文件可以确保文件在读取或写入后被正确关闭,不用自己调用close()函数。

29. range(1, 11, 2)会生成一个包含数字1, 3, 5, 7, 9, 11的序列。( )

A. 正确

B.错误

标准答案:错误

试题难度:一般

试题解析:range(1, 10, 2)会生成一个包含数字1, 3, 5, 7, 9的序列。注意range函数包头不包尾,生成的序列不包括11。

30. 使用sorted()函数可以给列表排序,参数reverse设置为True时,按从小到大排序;参数reverse设置为False时,按从大到小排序。( )

A. 正确

B.错误

标准答案:错误

试题难度:一般

试题解析:参数reverse设置为True时,降序排序;参数reverse设置为False时,升序排序。

31.

以下代码可以计算列表a中各元素(得分)的平均分。( )

a = [90, 80, 70, 60, 50]

print( sum(a) / len(a) )

A. 正确

B.错误

标准答案:正确

试题难度:一般

试题解析:sum(a)可以计算列表a的各元素总和,len(a)可以计算列表a的长度(元素个数),两者相除得到平均值。

32. all([])和any([])的结果都是True。( )

A. 正确

B.错误

标准答案:错误

试题难度:容易

试题解析:all([])的结果是True,any([])的结果是False。

33.

列表中的pop()方法和del语句都能删除列表中被指定的元素。所以,如下4行代码运行之后,屏幕上将打印出 ['红','绿','蓝'],这个运行结果是对的。( )

list1 = ['红','绿','蓝','白','紫']

del list1[3]

list2=list1.pop(3)

print(list2)

A. 正确

B.错误

标准答案:错误

试题难度:一般

试题解析:本题主要考查学生对del语句与pop()方法的理解与掌握。两者都能删除列表中指定的元素,但又有区别,代码首先del删掉“白”字,然后pop()删掉'紫'字,pop()方法删掉的字被赋给了变量list2,所以最后打印出的应该是'紫'字,不是['红','绿','蓝'],应选运行结果“错误”。

34. 如果list1 = ['赵','钱','孙','李','周','吴','郑','王'],那么:

list1[1:-4] 肯定与 list1[1:4] 相等。请判断对吗?( )

A. 正确

B.错误

标准答案:正确

试题难度:容易

试题解析:考查学生对列表切片时,切片起始位置、终止位置的理解。本题两个切片的结果都是['钱', '孙', '李'],所以两切片相等,是正确的。

35.

读以下程序代码,运行程序后,输出的是:发生了一个异常。( )

try:

    print(x)

except:

    print("发生了一个异常")

finally:

    print("请修改程序,再试一次!")

A. 正确

B.错误

标准答案:错误

试题难度:一般

试题解析:无论try语句是否异常,Finally都会被执行。

运行代码后,输出的结果是:

发生了一个异常

请修改程序,再试一次!

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

36. 分解质因数

输入一个整数,分解质因数。例如:输入90,打印出90=2*3*3*5。请完善以下代码,运行程序。

target=int(input('输入一个整数:'))

print(target,'= ',end='')

if target<0:

    target=        ①        (target)

    print('-1*',end='')

flag=0

if target<=1:

    print(target,end='')

    flag=        ②        

while True:

    if flag:

        break

    for i in range(2,int(target+1)):

        if         ③        :

            print("%d"%i,end='')

            if target==i:

                flag=1

                break

            print('*',end='')

                    ④        

            break

标准答案:

参考代码:

target=int(input('输入一个整数:'))

print(target,'= ',end='')

if target<0:

    target=abs(target)

    print('-1*',end='')

flag=0

if target<=1:

    print(target,end='')

    flag=1

while True:

    if flag:

        break

    for i in range(2,int(target+1)):

        if target%i==0:

            print("%d"%i,end='')

            if target==i:

                flag=1

                break

            print('*',end='')

            target/=i

            break

试题难度:较难

试题解析:

评分标准:

(1)abs 或等效答案;(2分)

(2)1 或等效答案;(3分)

(3)target%i==0 或等效答案;(3分)

(4)target/=i 或等效答案。(2分)

37. 成绩系统

小王同学编写了一个成绩录入和查询系统,能实现输入多个互不相同的分数,自动进行从高到低排名,同时输入要查询的分数,可以获得相应同学的姓名。程序运行结果如下图所示,实现代码如下,请你补全空缺处。

n=int(input("请输入总人数:"))

name=[""]*n

score=[0]*n

#输入功能,分别输入姓名与分数

for i in range(n):

    name[i]=input("请输入第"+str(i+1)+"个人名:")

           ①        =int(input("请输入第"+str(i+1)+"个分数:"))

#排名功能

for i in range(n-1):

    for j in range(0,n-1-i):

        if score[j]        ②        score[j+1]:

            score[j],score[j+1]=score[j+1],score[j]

            name[j],name[j+1]=name[j+1],name[j]

print("——————各个同学分数排名如下——————")

print(name)

print(score)

#查询功能

i=0

        ③        

key=int(input("请输入要查询的分数:"))

b=-1

while i<=j and b==-1:

    m=(i+j)//2

    if score[m]==key:

        b=m

    elif score[m]<key:

        j=        ④        

    else:

        i=m+1

if b==-1:

    print("没有同学获得该分数!")

else:

print("分数为"+str(key)+"的同学是:"+        ⑤        

标准答案:

参考程序:

n=int(input("请输入总人数:"))

name=[""]*n

score=[0]*n

#输入功能,分别输入姓名与分数

for i in range(n):

    name[i]=input("请输入第"+str(i+1)+"个人名:")

    score[i]=int(input("请输入第"+str(i+1)+"个分数:"))

#排名功能

for i in range(n-1):

    for j in range(0,n-1-i):

        if score[j]<score[j+1]:

            score[j],score[j+1]=score[j+1],score[j]

            name[j],name[j+1]=name[j+1],name[j]

print("——————各个同学分数排名如下——————")

print(name)

print(score)

#查询功能

i=0

j=n-1

key=int(input("请输入要查询的分数:"))

b=-1

while i<=j and b==-1:

    m=(i+j)//2

    if score[m]==key:

        b=m

    elif score[m]<key:

       j=m-1

    else:

        i=m+1

if b==-1:

    print("没有同学获得该分数!")

else:

    print("分数为"+str(key)+"的同学是:"+name[m])

试题难度:较难

试题解析:

评分标准:

(1)score[i](或等效答案);(3分)

(2)<(或等效答案);(3分)

(3)j=n-1(或等效答案);(3分)

(4)m-1(或等效答案);(4分)

(5)name[m](或等效答案)。(3分)

38. 统计总分

有下图左边名为“虚拟学校5年级学生数据.csv”的文件,要实现下图右边统计每位同学语、数、外三门学科的总分,小明编写了以下程序,请将红色 ①、② 两处的代码补充完整:

f = open('/data/        ①        ','r',encoding='utf-8')

i = 1

for line in f:

    s = ""

    a = line.strip("").split(",")

    if i >= 2 :     #第一行是每列的标题,不用计算,要从第二行开始计算

        s = str(        ②        ) + ' 的总分为:' + str(int(a[5]) +int(a[6]) +int(a[7]) )

    i = i + 1

    print(s)

f.close

标准答案:

参考程序:

f = open('/data/虚拟学校5年级学生数据.csv','r',encoding='utf-8')

i = 1

for line in f:

    s = ""

    a = line.strip("").split(",")

    if i >= 2 :    #第一行是列标题不用计算,要从第二行开始计算

        s = str(a[0]) + ' 的总分为:' + str(int(a[5]) +int(a[6]) +int(a[7]) )

    i = i + 1

    print(s)

f.close

试题难度:容易

试题解析:

评分标准:

(1)虚拟学校5年级学生数据.csv 或等效答案;(2分)

(2)a[0] 或等效答案。(2分)


http://www.kler.cn/a/467395.html

相关文章:

  • 苍穹外卖 项目记录 day03
  • nginx学习之路-nginx配置https服务器
  • 30分钟学会css
  • Wireshark 具体某种协议的分析
  • uni-app:实现普通选择器,时间选择器,日期选择器,多列选择器
  • Linux运维相关基础知识(二)
  • 力扣-数据结构-12【算法学习day.83】
  • C#多线程精解
  • 第4天:Web应用蜜罐系统堡垒机运维API内外接口第三方拓展架构部署影响
  • Tortoisegit 安装之后没有Add、ignore解决
  • 最小二乘有限差分的物理信息神经网络与物理信息神经网络的区别
  • 升级Cypress到10.8.0
  • LeetCode 力扣 热题 100道(二十九)螺旋矩阵(C++)
  • 【STC库函数】Compare比较器的使用
  • 基于Java的敬老院管理系统的设计和实现【源码+文档+部署讲解】
  • Python嵌套列表的浅拷贝与深拷贝
  • Python虚拟环境管理
  • jquery实现的网页版扫雷小游戏源码
  • 从CRUD到高级功能:EF Core在.NET Core中全面应用(一)
  • STM32-笔记26-WWDG窗口看门狗
  • 基于高斯噪声模型的信号去噪——图像相加去噪的理论保证
  • 22408操作系统期末速成/复习(考研0基础上手)
  • 前端开发语言涉及到 的集合框架(Collections Framework)
  • PHP在做api开发中,RSA加密签名算法如何使用 ?
  • Fabric环境部署-Git和Node安装
  • 蛋白互作组学系列丨(四)IP-MS数据分析