青少年软件编程(Python)等级考试试卷2022-09Python三级真题

分数: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分)

你可能感兴趣的:(python,java,算法)