真题与解析 202312三级 青少年软件编程(Python)考级

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

青少年软件编程(Python)等级考试试卷(级)

2023012真题与解析

分数:100  题数:37  测试时长:60分钟

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

1.一个非零的二进制正整数,在其末尾添加两个“0”,则该新数将是原数的?( )

A.10倍

B.2倍

C.4倍

D.8倍

2.2023年亚运会将在杭州举办。关于2023,若将其转换为二进制数,则末位数字为?( )

A.0

B.1

C.3

D.不确定

3.二进制数10010,转换为十进制数和十六进制数分别为?( )

A.18和12

B.36和1A

C.50和1A

D.36和12

4.在Python中,int('1010',8)语句的作用是?( )

A.将十进制数1010转化为八进制数1010

B.将二进制数1010转化为八进制数12

C.将八进制字符串“1010”转化为八进制整数

D.将八进制数“1010”转化为十进制整数

5.假设cai.csv文件内容如下图所示,那么下列代码的输出结果是?( )

f = open('cai.csv', 'r')

c = []

for i in f:

    c.append(i.strip('\n').split(','))

f.close()

print(c)

A.[['肉','15'],['白菜','8']]

B.['肉','15','白菜','8']

C.['肉','15'],['白菜','8']

D.'肉','15','白菜','8'

6.2023年中国航天事业再次刷新纪录,主要事件记录在abc.txt文件中,具体内容如下图所示,程序运行后s值是?( )

f = open(’abc.txt’, ‘r’)

s = f.readline()

print(s)

A.5月11日,天舟六号

B.5月30日,神舟十六

C.6月 7日,力箭一号

D.6月16日,长征二号

7.Python是强大的数据处理工具,能方便读写文件。 打开D:\test.csv,文件的内容如下图所示,

>>>f=open(r"D:\test.csv",'r')

>>>s1=f.read()

>>>s2=f.read()

>>>f.close()

运行上述程序,说法正确的是?( )

A.>>>s1

'hello python!'

B.>>>s1

'hello word!'

C.>>>s1

'hello python!\nhello word!\n'

D.>>>s2

'hello python!\nhello word!\n'

8.Python是强大的数据处理工具,目前受到大家青睐。下列说法错误的是?( )

A.数据文件格式丰富,常见的有一维数据、二维数据和多维数据

B.read()函数可以读取整个文件的内容

C.write()函数向文件中可以写入列表、字符串、整型等数据类型内容

D.python中有许多函数,能够直接对csv、excel、txt等文件内容读写、删除等操作

9.运行下面一段程序,说法正确的是?( )

f = open('yayun.txt', 'w')

f.write('迎亚运,创未来\nHeart to Heart\n')

f.close()

A.运行程序后,打印:

'迎亚运,创未来\nHeart to Heart\n'

B.运行程序后,打印:

迎亚运,创未来

C.本段程序的功能是打开yayun.txt

D.如果python程序同目录下不存在yayun.txt,将创建yayun.txt

10.语句print(chr(ord('a')+5))的运行结果是?( )

A.66

B.e

C.f

D.g

11.表达式sum(map(int,'12345'))的返回值是?( )

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

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

C.10

D.15

12.下列选项中,结果与其他三项不同的是?( )

A.print(list(range(1, 10, 2)))

B.print(list(range(1, 11, 2)))

C.print(list('13579'))

D.print(list(map(int,['1', '3', '5', '7', '9'])))

13.divmod(-9, 2)的结果是?( )

A.(-5, 1)

B.(-1, -4)

C.(-4, -1)

D.(1, -5)

14.下列代码创建了4个变量,其中变量值最大的是?( )

a = round(3.65)

b = int(max('123'))

c = 7/2

d = abs(-3.9)

A.a

B.b

C.c

D.d

15.bool(0)的结果是?( )

A.True

B.False

C.1

D.0

16.语句set('2023')的返回值是?( )

A.{2, 0, 2, 3}

B.{0, 2, 3}

C.{'2', '0', '2', '3'}

D.{'0', '2', '3'}

17.a=[1,2,3,4,5],则sum(a)的值是?( )

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

B.'15'

C.15

D .'12345'

18.表达式str([1,2,3])的返回值是?( )

A.['1', '2', '3']

B.'[1, 2, 3]' 

C.['123']

D.str函数只能将数字转换成字符串,表达式中的参数是一个列表,运行报错

19.下列选项中,对help函数的说法错误的是?( )

A.可以使用help函数查看某个数据类型的帮助信息

B.可以使用help函数查看某个函数的帮助信

C.可以使用help函数查看某个模块的帮助信息

D.对于自己定义的变量,不可以使用help函数查看自定义变量的帮助信息

20.通过input()函数输入的数据类型是?( )

A.int

B.float

C.str

D.list

21.运行下面程序,错误的输入和输出数据是?( )

try:

    x=int(input())

    y=int(input())

    m=divmod(x,y)

    print(m)

except:

    print('error')

else:

    print('right')

finally:

    print('OK')

A.

输入

1

0

输出

error

OK

B.

输入

0

5

输出

(0, 0)

right

OK

C.

输入

5

1

输出

(5, 0)

right

OK

D.

输入

5

0

输出

0

right

OK

22.运行下面程序,错误的输入和输出数据是?( )

try:

    x=eval(input())

    c=abs(x)

    print(c)

except NameError:

    print('NameError!')

except:

    print('Other error!')

A.

输入

0

输出

Other error!

B.

输入

-2.5

输出

2.5

C.

输入

6

输出

6

D.

输入

abc

输出

NameError!

23.以下关于算法的描述错误的是?( )

A.算法可以用自然语言、流程图、伪代码、编程语言等多种方式进行表示

B.顺序结构、选择结构、循环结构是算法的3种基本结构

C.算法可以没有输出,但必须有输入

D.算法的执行步骤是有限的

24.用冒泡排序对4,5,6,3,2,1进行从小到大排序,第二趟排序后的状态是?( )

A.4 5 3 2 1 6

B.4 3 2 1 5 6

C.3 2 1 4 5 6

D.2 1 3 4 5 6

25.在对n个元素进行直接插入排序的过程中,一般共需要进行几趟?( )

A.2

B.n-1

C.n

D.n+1

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

26.十六进制数转换成十进制数,其位数一定变多。( )

27.表达式int("ob110",8)的结果应是72。( )

28.在Python中,readlines()每次按行读取文件内容,通常将读取到的内容放到一个字符串变量中,返回str类型数据。( )

29.下列程序的功能是将列表对象输出到CSV文件。( )

shuig=['苹果','香蕉','桃子','西瓜']

f=open('shuiguo.csv','w')

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

f.close()

30.CSV格式存储数据采用逗号分隔元素,也可以存储二维数据。( )

31、以下代码的运行结果是False。( )

a = any([None,[],(),[{}]])

print(a)

32.range(6)和range(0,6)的结果相同。( )

33.运行下列代码后,列表a中保存的元素是从小到大按顺序排列的。( )

a = [5, 6, 4, 8, 2, 7, 3, 1]

sorted(a)

34.使用min函数可以获取多个数字中的最小值。( )

35.try:

    x=int(input())

    y=int(input())

    n=x%y

    print(n)

except ValueError:

    print('ValueError!')

except ZeroDivisionError:

    print('ZeroDivisionError!')

except:

    print('Other error!')

当程序输入:

0

0

程序的运行结果是:

Other error!

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

36.学校图书馆为了方便查找管理书籍,给每本书编写了号码,[8,9,10,12,13,14,16,17,25,27],输入号码提示这本书号码排第几。

例如:输入12,输出:要查找的书号12排第4 。

请完善程序:

lst=[8,9,10,12,13,14,16,17,25,27]

hm=int(input('请输入书本号码'))

i,j=0,n-1

b=-1

while ② :

    m=(i+j)//2

    if ③ :

        b=m

        break

    elif hm>lst[m]:

    ④

    else:

    j=m-1

if b==-1:

    print('要查找的书号['+str(hm)+']不在列表lst中。')

else:

print('要查找的书号['+str(hm)+']排第'+ ⑤ )

37.有一个“/data/书籍存单.csv”文件,内容如下图所示。小明编写代码,想查询小说《封神榜》的价格,请补充代码中缺失的部分。

with open('/data/书籍存单.csv', 'r', encoding='utf-8') as f:

    for line in f.readlines():

        a = ① .split(",")

    if a[0] == "封神榜" :

        print( ② )

38.当我们过马路的时候,经常会遇到红绿灯,你知道这些信号灯的时长是怎么来的吗?若要用python分析计算人行马路最短绿灯时长,我们需要知道马路的宽度s,行人的步行速度v以及行人的反应时长t0,因为绿灯的最短时长计算公式为t=s/v+t0。

不同的人有不同的行走速度。通常在正常成人、老人、小孩的步行速度中,应选取老人或者小孩的数据进行计算比较合理。

用Python模拟编写绿灯最短时长程序和测试输出结果(测试输入马路宽度为15)分别如下,请补全划线处代码:

v=1.2 #设置行走速度

t0=1 #设置行人反应时长

s=int(input("请输入马路的宽度(米):"))

t= ①

print(t)

#观察发现,在实际生活中,绿灯显示时长不可能为小数,因此若要上述输出结果正常,可以修改print(t)语句,那么你会如何修改?请在下方填入你的代码。

if t>int(t):

    print( ② )

elif t==int(t):

print( ③ )

参考答案及解析:

一、单选题

1. 答案:C

   - 解析:在一个非零二进制正整数末尾添加两个“0”,相当于将这个数乘以2的2次方,即4倍。

2. 答案:B

   - 解析:2023转换为二进制是11111100111,末位数字为1。

3. 答案:A

   - 解析:二进制数10010转换为十进制是18,转换为十六进制是12。

4. 答案:D

   - 解析:int('1010',8)是将八进制数“1010”转化为十进制整数。

5. 答案:A

   - 解析:代码逐行读取文件内容,去除换行符并以逗号分割,得到一个包含两个子列表的列表,每个子列表对应文件中的一行数据。

6. 答案:A

   - 解析:readline()函数读取的是文档的第一行。

7. 答案:C

   - 解析:第一次调用 read()方法读取文件内容“hello python!\nhello word!\n”,第二次调用 read()方法由于文件指针已经在末尾,所以读取不到内容。

8. 答案:D

   - 解析:Python 中没有直接对 csv、excel、txt 等文件内容进行读写、删除等操作的单一函数,需要结合不同的模块和方法来处理这些文件。

9. 答案:D

   - 解析:代码以写入模式打开文件,如果文件不存在会创建文件,然后写入内容并关闭文件。

10. 答案:C

   - 解析:ord('a')是字符'a'的 ASCII 值97,加上5后为102,chr(102)对应的字符是'f'。

11. 答案:D

   - 解析:map(int,'12345')将字符串中的每个字符转换为整数,sum()函数对这些整数求和,结果为15。

12. 答案:C

   - 解析:A 选项 range(1, 10, 2)生成 1、3、5、7、9;B 选项 range(1, 11, 2)生成 1、3、5、7、9;C 选项 list('13579')将字符串转换为列表结果为['1', '3', '5', '7', '9'];D 选项将字符串列表中的元素转换为整数后组成列表,结果都是[1, 3, 5, 7, 9]。

13. 答案:A

   - 解析:divmod(-9, 2)返回商和余数组成的元组,-9 除以 2 商 -5 余 1。

14. 答案:A

   - 解析:a = round(3.65)=4;b = int(max('123'))=3;c = 7/2=3.5;d = abs(-3.9)=3.9,a 的值最大。

15. 答案:B

   - 解析:bool(0)返回 False。

16. 答案:D

   - 解析:set('2023')将字符串转换为集合,去除重复元素,得到{'0', '2', '3'}。

17. 答案:C

   - 解析:sum(a)对列表 a 中的元素求和,结果为15。

18. 答案:B

   - 解析:str([1,2,3])将列表转换为字符串'[1, 2, 3]'。

19. 答案:D

   - 解析:对于自定义的函数或类等也可以使用 help 函数查看帮助信息。

20. 答案:C

   - 解析:通过 input()函数输入的数据类型是字符串。

21. 答案:D

   - 解析:当输入 5 和 0 时,会触发 ZeroDivisionError 异常,输出应该是“ZeroDivisionError!”和“OK”,而不是“0”“right”“OK”。

22. 答案:A

   - 解析:输入 0 时,abs(0)=0,不会触发任何异常,应该输出 0,而不是“Other error!”。

23. 答案:C

   - 解析:算法的特点包括有穷性(算法的执行步骤是有限的,D 正确)、确定性、可行性、有输入和有输出(算法必须有输入也必须有输出,C 错误)等。算法可以用自然语言、流程图、伪代码、编程语言等多种方式进行表示(A 正确),顺序结构、选择结构、循环结构是算法的 3 种基本结构(B 正确)。

24. 答案:C

   - 解析:冒泡排序每一趟都把最大的数沉到最后。第一趟排序后:4,5,3,2,1,6;第二趟排序后:4,3,2,1,5,6。答案是 B。

25. 答案:C

   - 解析:直接插入排序需要进行 n-1 趟。答案是 B。因为从第二个元素开始,依次与前面已排好序的元素进行比较并插入合适位置,总共需要 n-1 次比较插入过程。

二、判断题

26. 答案:错

   - 解析:十六进制数转换成十进制数,位数不一定变多,例如十六进制数 A(十进制为 10)转换后还是两位数。

27. 答案:错

   - 解析:int("ob110",8)会报错,因为八进制数应该以“0o”开头,不是“ob”。

28. 答案:错

   - 解析:readlines()通常将读取到的内容放到一个列表中,列表中的每个元素对应文件中的一行内容,返回列表类型数据。

29. 答案:对

   - 解析:代码以写入模式打开文件,将列表中的元素用逗号连接后写入文件并加上换行符,实现了将列表对象输出到 CSV 文件的功能。

30. 答案:对

   - 解析:CSV 格式存储数据采用逗号分隔元素,可以存储二维数据,每一行代表一个一维数据,多行组成二维数据。

31. 答案:错

   - 解析:any()函数只要可迭代对象中有一个元素为真值就返回 True,[None,[],(),[{}]]中[{}]不为空,所以结果为 True。

32. 答案:对

   - 解析:range(6)和 range(0,6)的结果都是生成 0 到 5 的整数序列。

33. 答案:错

   - 解析:sorted(a)会返回一个新的已排序列表,但不会改变原列表 a 的顺序。

34. 答案:对

   - 解析:min 函数可以接收多个数字作为参数并返回其中的最小值。

35. 答案:错

   - 解析:输入 0 和 0 会触发 ZeroDivisionError 异常,应该输出“ZeroDivisionError!”,而不是“Other error!”。

三、编程题

36.参考答案:

lst = [8, 9, 10, 12, 13, 14, 16, 17, 25, 27]

hm = int(input('请输入书本号码'))

n = len(lst)

i, j = 0, n - 1

b = -1

while i <= j:

    m = (i + j) // 2

    if lst[m] == hm:

        b = m

        break

    elif hm > lst[m]:

        i = m + 1

    else:

        j = m - 1

if b == -1:

    print('要查找的书号[' + str(hm) + ']不在列表 lst 中。')

else:

    print('要查找的书号[' + str(hm) + ']排第' + str(b + 1))

解析:

1. n = len(lst):先获取列表的长度,方便后续操作。

2. i <= j:确保查找范围有效。

3. lst[m] == hm:判断中间位置的元素是否等于要查找的书号。

4. i = m + 1:如果要查找的书号大于中间位置的元素,说明在右侧继续查找,调整左侧索引。

5. str(b + 1):因为列表索引从 0 开始,而题目要求输出的排名从 1 开始,所以要加 1。

37.参考答案:

  with open('/data/书籍存单.csv', 'r', encoding='utf-8') as f:

    for line in f.readlines():

        a = line.split(",")

        if a[0] == "封神榜":

            print(a[1])

解析:

  1. line.split(","):这样可以正确地处理每行数据,然后以逗号作为分隔符将其分割成一个列表。
  2. 2.a[1]:如果找到了小说《封神榜》,则输出其对应的价格,价格在列表中的索引为 1。

38.参考答案:

v = 1.2  # 设置行走速度

t0 = 1  # 设置行人反应时长

s = int(input("请输入马路的宽度(米):"))

t = s / v + t0

print(t)

# 观察发现,在实际生活中,绿灯显示时长不可能为小数,因此若要上述输出结果正常,可以修改 print(t) 语句,那么你会如何修改?请在下方填入你的代码。

if t > int(t):

    print(int(t) + 1)

elif t == int(t):

    print(int(t))

解析:

1. s / v + t0:根据绿灯的最短时长计算公式`t=s/v+t0`进行计算。

2. int(t) + 1:当`t`大于整数部分时,向上取整,即输出整数部分加一。

3. int(t):当`t`等于整数部分时,直接输出整数部分。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴朗向上

你的鼓励是我最大的动力,感谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值