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

2022-09 Python三级真题
分数:100  
题数:38
测试时长:60min

一、单选题(共25题,共50分) 
1.十六进制数100,对应的十进制数为 ?(B) (2分)
A. 128 
B. 256 
C. 28 
D. 56
答案解析:考查学生将十六进制数转为十进制数。本质上就是int('100',16),答案为256。

2.下图代码中,问号处应该填写的答案是哪个?(D )(2分)

>>hex( ? )
'0xa'
>>

A. "9"
B. 9
C. "10"
D. 10
答案解析:hex() 函数用于将10进制整数转换成16进制。本题中答案为十进制数10,不能加引号。

3.下列4个表达式中,答案不是整数6的是?(D)(2分)
A. abs(-6)
B. int(6.88) 
C. round(5.55)
D. min(float(6),9,8,7)
答案解析:考查学生对内置数值处理函数的理解。abs()是取绝对值,int()默认会取整,round()四舍五入,float()会把整数转为浮点数,min()获取列表中的最小值,所以,上列4个表达式,只有选项D的答案是6.0浮点数,不是整数6

4.min()函数用于获取参数中的最小值,如果 a = min('654') ,请问下面表达式中,正确的是哪一个?(C)(2分)
A. print(max(chr(a),3,2))
B. print(max(bin(a),3,2))
C. print(max(float(a),3,2))
D. print(max(hex(a),3,2))
答案解析:本题考查学生对常用编码与数制函数的理解与掌握,正确答案选C 。因为 min('654') 得到的是一个字符,而chr()、bin()、hex()三个函数的参数都必须是整数,所以唯一正确的是选项C ,float()函数可以将字符转换成浮点数。

5.对于CSV格式数据文件,下列描述错误的是?(B)(2分)
A. CSV文件使用逗号分隔值。
B. CSV文件的扩展名为.CS。
C. CSV格式是一种通用的,相对简单的文件格式。
D. “记事本”和“Excel”可直接读入和保存CSV格式文件。

6.下列程序将建立一个CSV格式文件,划线处正确的代码选项应该为?(C )(2分)

a=['老虎','狗','大象','牛']

f=open('动物.CSV',______)
f.write(','.join(a)+'\n')
f.close()

A. 'W'
B. 'R'
C. 'w'
D. 'r'

7.动物.CSV的文件内容如下:'老虎', '狗', '大象', '牛',下列程序从该CSV文件读出数据,并输出列表格式,划线处正确的代码选项应该为?(B )(2分)

f=open('动物.CSV','r')
a=f.read().strip().split(______)
f.close()
print(a)

A. ','
B. ','
C. '\n'
D. '\t'


8.下面程序生成CSV格式文件: 
王鑫,86,90,92,99,94,95 
杨小虹,93,97,95,90,86,85 
李静,89,98,99,94,90,85 

程序如下:

a=[['王鑫','86','90','92','99','94','95'],
['杨小虹','93','97','95','90','86','85'],
['李静','89','98','99','94','90','85']]
f=open('成绩.CSV','w')
for i in a:
  f.write(','.join(i)+______)
f.close()

划线处的代码应该为?(D )

A. 'r'
B. 'w'
C. '\t'
D. '\n'
答案解析:CSV格式结果换行,所以选D。

9.一个“成绩.CSV”文件(用“记事本”打开)如下:

王鑫,86,90,92,99,94,95
杨小虹,93,97,95,90,86,85
李静,89,98,99,94,90,85

下面程序执行结果是?(A )

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

a=[]
for i in f:
    a.append(i.strip().split(','))
f.close()
print(a)

A. [['王鑫', '86', '90', '92', '99', '94', '95'], ['杨小虹', '93', '97', '95', '90', '86', '85'],['李静', '89', '98', '99', '94', '90', '85']]
B. [['王鑫', '86', '90', '92', '99', '94', '95\n'], ['杨小虹', '93', '97', '95', '90', '86', '85\n'],['李静', '89', '98', '99', '94', '90', '85\n']]
C. [['王鑫,86,90,92,99,94,95'], ['杨小虹,93,97,95,90,86,85'], ['李静,89,98,99,94,90,85']]
D. ['王鑫,86,90,92,99,94,95\n', '杨小虹,93,97,95,90,86,85\n', '李静,89,98,99,94,90,85\n']

10.猜一个2022以内的随机数,用计算机解决该问题,比较合适的算法?(A)(2分)
A. 二分查找算法
B. 解析算法
C. 枚举算法
D. 冒泡排序算法

11.现在一组初始记录无序的数据'8,9,5,2,1',使用冒泡算法,按从小到大的顺序排列,则第三轮排序的结果为?(B)(2分)
A. [8,5,2,1,9]
B. [2,1,5,8,9]
C. [5,2,1,8,9]
D. [1,2,8,9,5]
答案解析:根据冒泡排序按从小到大的顺序第一轮应是[8, 5, 2, 1, 9],第二轮是[5,2,1,8,9],第三轮是[2,1,5,8,9]

12.有如下列表a=[3,5,35,74,1,28,7],采用选择排序算法进行升序排序,请问第三轮排序之后的结果是?(C)(2分)
A. [1,3,5,35,74,28,7]
B. [1,3,5,7,28,35,74]
C. [1,3,5,74,35,28,7]
D. [1,3,5,7,35,74,28]

13.程序运行过程中出现的错误或意外,不包括以下选项?(B)(2分)
A. 语法错误
B. 电脑不好
C. 运行错误
D. 逻辑错误

14.关于Python在处理程序异常时,下列说法不正确的是?(A)(2分)
A. 每一个try模块只能设定一个except模块
B. 执行except模块部分,可以让程序继续运行
C. 程序有错误时执行except中的代码,没有错误时执行try中的代码
D. 异常处理可以弥补程序漏洞,使得程序在一些情况下不会终止运行。
答案解析:可以设定多个except模块,以处理不同的错误。

15.divmod()函数的功能是用来求模和计算余数。对应变量x和y,divmod(x,y)返回的结果是以下哪一项?(A)(2分)
A. (x//y, x%y)
B. (x/y, x%y)
C. (x%y, x//y)
D. (x%y, x/y)


16.bool()函数用于将给定参数或表达式转换为布尔类型,以下使用了bool()函数的实例中,哪项返回True值?(D)(2分)
A. bool(0)
B. bool( )
C. bool(15*15+14*14<420)
D. bool(-1)

17.查看对象的属性和属性值等信息,可以使用以下哪种函数?(A )(2分)
A. vars()
B. dir()
C. help()
D. map()

18.round(20/3) 的返回值是以下哪一项?(C )(2分)
A. 6
B. 2
C. 7
D. 1

19.语句sorted([9,6,8,2,5],reverse = True)的返回结果是以下哪一项?(C)(2分)
A. [2,5,6,8,9]
B. [9,6,8,2,5]
C. [9,8,6,5,2]
D. [0]

20.执行语句"{1}{0}".format("中国", "加油","!"),输出结果是以下哪一项?(D)(2分)
A. '中国加油!'
B. '加油中国!'
C. '中国加油'
D. '加油中国'

21.关于语句float(2022)与float('2022')运行后的输出结果,以下哪一项正确?( B)(2分)
A. 均为2022
B. 均为2022.0
C. float(2022)的输出为2022,float('2022')运行后出错
D. float(2022)的输出为2022.0,float('2022')运行后出错

22.语句max([(1,2),(2,3),(3,4),(2,5)])运行后的输出结果是以下哪一项?(D)(2分)
A. 5
B. (2,5)
C. (4,5)
D. (3, 4)

23.enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列。

下列程序
example = '7890'
for i,j in enumerate(example):
    print(i,j)

运行后的输出打印结果为以下哪一项?(D)

A. 

0,0
1,7
2,8
3,9

B. 

0,7
1,8
2,9
3,0

C. 

0 0
1 7
2 8
3 9

D. 

0 7
1 8
2 9
3 0

24.关于all()函数的用法,以下语句中能够返回True值的是哪一项?( D)(2分)
A. all(0)
B. all([0])
C. all([0,1,2])
D. all(['0','1','2'])

25.如果要设计班级通讯录管理功能,需要往address.csv文件中追加新记录,(2分)则应该使用以下哪一种打开文件的方式?( A)
A. open('address.csv','a+')
B. open('address.csv','w+')
C. open('address.csv','wb+')
D. open('address.csv','rb+')

二、判断题(共10题,共20分)
26.有这样一个表达式:ord('a') - ord('A') ,这个表达式运行的结果是整数 32 。(对)
答案解析:考查学生对ord()函数的理解。ord()函数的返回值为整数,字符 'a' 与 'A' 之间的差为整数32,所以本题答案是正确的。

27.一维数据的存储常常采用空格、逗号、换行、分号等符号分隔元素。(对)
答案解析:考查一维数据的分隔格式。

28.a=[['王鑫','86','90','92','99','94','95'],['杨小虹','93','97','95','90','86','85'],['李静','89','98','99','94','90','85']]其中,杨小虹同学的第三门成绩95的数据类型是整数。(错 )
答案解析:应是字符串

29.二维数据的处理等同于二维列表的操作,借助循环遍历可实现对每个数据的处理。(对)
答案解析:二维数据的循环遍历处理方式

30.关于程序的异常处理,可以使用try…except…或try…except…except…语句进行捕获控制。(对) 
答案解析:遇到错误语句,try代码块的剩余语句将忽略,根据错误情况转而执行相应的except语句块。

31.使用input()函数可以一次从键盘输入一个字符串,按回车键结束输入。(对)

32.set是一个不允许元素重复的集合。由于set里的元素位置允许随意,所以不能用索引访问。(对)

33.help()函数用来查看函数或模块的帮助信息,但不能直接查看对象里所提供方法的帮助信息。(对)

34.sum()函数可以对列表进行求和,但不能对元组进行求和。(错)

35.在Python编程语言中,'0b10' 表示二进制数10,并且这个数换算为十进制,就是整数2。(对)
答案解析:本题考查学生对二进制表示方式的理解,同时也考查学生对十进制与二进制相互转换的理解。

三、编程题(共3题,共30分)
36.如下图有一个名为“book.csv”的文件,小明想计算所有库存书籍的总价,于是编写了下面代码。请将红色①②处的代码补充完整。

b = 0
s = 0
with open('/data/book.csv', 'r', encoding='utf-8') as f:
    for line in f.  ___①____   ():
        a = line.strip("\n").split(",")
        b = b+1
        if b >1: # 第一行是标题,所以从第二行开始计算
            s = s +   int(a[1]) *  _____②____   
print('总价:' , s)


参考程序:

b = 0
s = 0
with open('/data/book.csv', 'r', encoding='utf-8') as f:
    for line in f.readlines():
        a = line.strip("\n").split(",")
        b = b+1
        if b >1:   # 第一行是标题,所以从第二行开始计算
            s = s +   int(a[1]) * int(a[2]) 
print('总价:' , s)


评分标准:
(1)readlines  (2分)
(2)int(a[2])  (2分)
r 表示只读取,readlines是按行读取所有的行。

37.小敏想用二分法对关键字14进行查找,请你帮她补全代码。

lst=[3,12,7,45,9,10,31,90,1,23,14,52]
______①________    
key=14
n=len(a)
i,j=0,n-1
flag=-1
while ______②________ :
    mid=(i+j)//2
    if key==a[mid]:
        flag=mid
        break
    elif key>a[mid]:
        _____③_______      
    else:
        j=mid-1
if  _______④________      :
    print(str(key)+'没找到!')
else:
    print(str(key)+'已找到!')

参考程序:

lst=[3,12,7,45,9,10,31,90,1,23,14,52]
a=sorted(lst)
key=14
n=len(a)
i,j=0,n-1
flag=-1
while i<=j:
    mid=(i+j)//2
    if key==a[mid]:
        flag=mid
        break
    elif key>a[mid]:
        i=mid+1
    else:
        j=mid-1
if flag==-1:
    print(str(key)+'没找到!')
else:
    print(str(key)+'已找到!')

评分标准:

(1)a=sorted(lst) 或等效答案;(3分)
(2)i<=j 或等效答案;(2分)
(3)i=mid+1 或等效答案;(3分)
(4)flag==-1 或等效答案。(2分)

38.标准考试答题卡一般采用2B铅笔填涂,填涂好的答题卡经过扫描后得到相应的数字化图像,再通过光学识别,完成答题卡信息数据的采集、分析与统计。计算机判断答题卡中信息点被填涂的标准是灰度值小于132为黑色,灰度值大于等于132为白色。灰度值计算公式:灰度值=0.299×红色分量(R)+0.587×绿色分量(G)+0.114×蓝色分量(B),若分别输入n个信息点的RGB颜色值,则其判断程序如下:  

n=int(input("请输入信息点个数:"))

count=0

for i in range(1,n+1):

    R=int(input(”请输入红色分量:”)) 

    ______①________

    B= int(input(”请输入蓝色分量:”)) 

    Gray_scale= _______②________

    if  ______③_____ :

        print(“黑色”) 

        count=count+1

    else: 

         print(“白色”) 

print("黑色像素总共有:"+ ④ +"个")


参考程序:
n=int(input("请输入信息点个数:"))
count=0
for i in range(1,n+1):
    R=int(input("请输入红色分量:"))
    G=int(input("请输入绿色分量:"))
    B=int(input("请输入蓝色分量:"))
    Gray_scale=0.299*R+0.587*G+0.114*B
    if Gray_scale<132:
        print("黑色")
        count=count+1
    else:
        print("白色")
print("黑色像素总共有:"+str(count)+"个")


评分标准:
(1)G=int(input(”请输入绿色分量:”))或等效答案;(4分)
(2)0.299*R+0.587*G+0.114*B 或等效答案;(4分)
(3)Gray_scale<132 或等效答案;(4分)
(4)str(count) 或等效答案。(4分)
 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值