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

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

分数:100.00            
题数:38
测试时长:60min

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

1. 关于open()函数的参数,下列描述正确的是?( D)(2分)
A、"w+" 以十六进制格式打开一个文件只用于写入
B、"r+"打开一个文件用于读写。文件指针将会放在文件的末尾
C、"w" 打开一个文件只用于写入。如果该文件已存在则打开文件,并从原有位置开始编辑,即保留原有内容。如果该文件不存在,创建新文件
D、"r" 以只读方式打开文件,文件的指针将会放在文件的开头

答案解析:"w+" 打开一个文件用于读写。"r+"打开一个文件用于读写。文件指针将会放在文件的开头。
"w" 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。"r"  以只读方式打开文件,文件的指针将会放在文件的开头。

2.如下图代码,请问两条红线处应该填入?( B)(2分)
A、1、没有变化 2、没有变化
B、1、没有变化 2、顺序会有变化 
C、1、顺序会有变化 2、顺序会有变化
D、1、顺序会有变化 2、没有变化
答案解析:考查学生对列表的sort函数以及sorted函数的掌握与理解。正确答案是B

3. 下面不同数制数据中,数值最大的是?(A )(2分)
A、0x2B
B、0o37
C、41
D、0b100111

4. 执行下面代码:print(bool(2)+3),打印出的结果为?(B )(2分)
A、3
B、4
C、5
D、报错
答案解析:bool函数是int子类型,如果有参数,会返回true也就是整数1,所以正确答案是选项B,也就是数字4

5. 求既是3的倍数且各个位上的数的和是8的倍数的三位数,适合的算法是?(B )(2分)
A、解析算法
B、枚举算法
C、排序算法
D、对分查找法

6. 下列选项不是Python异常处理可能用到的关键字?( C)(2分)
A、try
B、else
C、if
D、finally

7. 已定义学期末考核科目km=["语文","数学","英语"],先根据安排需要添加综合学科进入考试科目,操作正确的是?( A)(2分)
A、km.append("综合")
B、km.insert("综合")
C、km.write("综合")
D、km.read("综合")

8. 表达式chr(ord("0")+3)的结果是?(B )(2分)
A、333
B、'3'
C、"000"
D、"0","0","0"
答案解析:ord()函数主要用来返回对应字符的ascii码,chr()主要用来表示ascii码对应的字符,chr(ord("0")+3)的值为'3'

9. 与十进制数 1770 对应的八进制数是?( C)(2分)
A、3350
B、3351
C、3352
D、3540

10. 下面代码的输出结果是?(B )(2分)a = [5,1,3,4]  print(sorted(a,reverse = True))
A、[5, 1, 3, 4]
B、[5, 4, 3, 1]
C、[4, 3, 1, 5]
D、[1, 3, 4, 5]

11. 用冒泡排序算法对6个数进行排序,进行比较的次数为?(D )(2分)
A、4
B、5
C、10
D、15

12. 以下代码执行后,如果用户输入为:3*6,则输出为?( C)(2分) cal=input("请输入计算公式:\n") print(eval(cal))
A、3*6
B、"3*6"
C、18
D、"18"

13. 关于Python函数的描述,正确的是?(A )(2分)
A、表达式float("3.14") 的结果是3.14
B、表达式type(100)的结果是十进制数
C、表达式oct(100)可以获得十六进制数
D、表达式hex(100)可以获得八进制数
答案解析:选项A正确,选项B.type(100)的结果是,选项C.oct(100)的值是'0o144',获得八进制数,选项D.hex(100)的值是'0x64',获得十六进制数。

14. Python中abs ()函数的作用为?(A )(2分)
A、求绝对值
B、求开方结果
C、求平方结果
D、求立方结果

15.以下代码的执行结果为?(B )(2分)t=(11,25,36) avg=sum(t)/len(t) print(avg)
A、24
B、24.0
C、12
D、12.0
答案解析:sum是求和函数,len是计数函数。两者相除就是就平均数,结果为小数。故有(11+25+36)/3等于24.0。

16. Python中十六进制与十进制进行转换时,下列表述错误的是?(A )(2分)
A、十进制数57转换成十六进制,可以表示成int('57',16)
B、十进制数57转换成十六进制,可以表示成hex(57)
C、十六进制数39转换成十进制,可以表示成int('39',16)
D、十六进制数39转换成十进制,可以表示成0x39


17. Python中使用open()函数打开文件完成读的功能,下列说法错误的是?(C )(2分)
A、readlines()方法是读取文本所有的行,直到文件末尾
B、readline()方法是读取文件的第一行
C、在同一个程序中,多次使用readline()方法后,程序仍读取第一行的内容
D、执行readline()方法后,运行的结果不是列表,而是字符串

18.以下代码执行后,得到的结果为?(A )(2分) list1 = [5, 0, 6, 1, 2, 7, 3, 4] print(sorted(list1, reverse=True))
A、[7, 6, 5, 4, 3, 2, 1, 0]
B、[0, 1, 2, 3, 4, 5, 6, 7]
C、[4, 3, 7, 2, 1, 6, 0, 5]
D、[5, 0, 6, 1, 2, 7, 3, 4]

19. int(7.8)的执行结果是?(C )(2分)
A、8
B、8.0
C、7
D、7.0

20. 关于查找的说法,下列说法正确的是?(A )(2分)
A、顺序查找属于无序查找
B、对分查找一定能找到数据
C、对分查找是一种低效的查找方法
D、顺序查找次数一定比对分查找次数多
答案解析:顺序查找和对分不一定能查找到数据。对分查找是一种高效的查找方法。如果数据元素在第一个位置,顺序查找次数不一定比对分查找次数多。

21. 当try子句中没有任何错误时,一定不会执行语句?( C)(2分)
A、try
B、else
C、except
D、finally

22. Python可以通过哪个函数实现字符串数据的格式化处理?(A )(2分)
A、format
B、int
C、max
D、str

23. 以下代码的输出结果是?( D)(2分)
ls =[]
for m in '想念':
    for n in '家人':
        ls.append(m+n)
print(ls)

A、想念家人
B、想想念念家家人人
C、想家想人念家念人
D、['想家', '想人','念家','念人']

24.format方法通常用来格式化print的输出格式。以下程序中使用format来输出: 我叫小明,我今年12岁了,则代码中缺失部分应该填写?( B)(2分)
name="小明" age=12 print("我叫{},我今年{}岁了".format(_________________))
A、age,name
B、name,age
C、name:age
D、age name

25. 下列数据中,不可能表示十六进制数的是?(C )(2分)
A、ABC
B、17F
C、8H5
D、9a01

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

26. except语句可以有多个,Python会按except语句的顺序依次匹配你指定的异常。(对)
答案解析:except语句可以有多个,Python会按except语句的顺序依次匹配你指定的异常,如果异常已经处理就不会再进入后面的except语句。

27. any([])函数和any(())函数的结果是False。(对)
答案解析:any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。元素除了是 0、空、FALSE 外都算 TRUE。

28.利用Python3自带的csv库进行操作,可使用以下程序获取class.csv文件中存储的表头信息,并进行输出。(对)

import csv

with open('class.csv') as f:

    reader=csv.reader(f)

    head_row=next(reader)

    print(head_row)
答案解析:import csv

with open('class.csv') as f:

    reader=csv.reader(f)

    head_row=next(reader)

    print(head_row)

利用csv库进行文件读取,通过变量读取表头信息并逐项打印

29. 利用csv格式存储二维数据时,每行都是一个一维数据,用逗号分隔,可以有空行。(错)
答案解析:利用csv格式存储二维数据时,每行都是一个一维数据,用逗号分隔,不能有空行

30.数学老师对小明说:我要计算[4,6,3,2,5,8,7,9]这几个整数的平方,你能帮我编程实现吗?
小明说:两行代码就能实现。程序如下!请判断,小明的这个程序是否正确。(对) 


答案解析:本题综合考查学生对list()与map()函数的掌握情况。答案是正确。

31. 多次使用readline()读取文件,如果要退到文件的起始位置,可以使用seek()实现。(对)

32. Python中使用print函数输出时,输出完毕默认会换行,不能通过修改参数改为其它间隔方式。(错)
答案解析:print函数中使用end参数可以指定换行之外的其它间隔符,如Tab等。

33. 十六进制与八进制数值之间的转换,常常借助二进制或者十进制作为中间的桥梁。(对)

34. 同一个整数分别用十六进制和八进制表示后,数值一定不相等。(错)

35. 语句print("a","b","c",sep=",")的输出结果是:"a"  "b"  "c"。(错)
答案解析:print("a","b","c",sep=",")的结果是a,b,c

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

36.法定节假日是根据各国、各名族的风俗习惯或纪念要求,由国家法律统一规定的用以进行庆祝及度假的休息时间。
法定节假日制度是国家政治、经济、文化制度的重要反映,涉及经济社会的多个方面,涉及广大人民群众的切身利益。
法定节假日的休假安排,为居民出行购物和休闲提供了时间上的便利,为拉动内需、促进经济增长做出了积极贡献。
给出一个2020年的节假日的放假日期CSV文件(vacations.csv),内容示例如下:

以第1行为例,1230表示12月30日,0101表示1月1日。

代码功能为:读入CSV文件中数据,获得用户输入。根据用户输入的节假日名称,输出此节假日的假期范围。请补全代码。

fi=open("/data/①     ","r")

ls=[]

for line in fi:

    ls.append(line.strip("\n").split(","))

fi.close()

s=input("请输入节假日名称:")

for line in ls:

    if        ②        :

        print("{}的假期位于{}-{}之间".format(line[1], line[2], line[3]))

答案:

参考答案:

①   vacations.csv   (2分)

②   s == line[1]     (2分)

答案解析:fi=open("vacations.csv","r")

ls=[]

for line in fi:

    ls.append(line.strip("\n").split(","))

fi.close()

s=input("请输入节假日名称:")

for line in ls:

    if s == line[1]:

        print("{}的假期位于{}-{}之间".format(line[1], line[2], line[3]))

37.尊老王国有一个默认规则,排队必须遵守年长的在前,年幼的在后。一支正要出城的队伍,请帮助他们顺利出城。
    输入:

    15、78、96、45、36

    输出

    [96, 78, 45, 36, 15]

    [3, 2, 4, 5, 1]

请在划线处补全代码,实现以上功能

s = input()

x= s.split('、')

a = []

b = []

n = 0

for i in range(0, len(x)):

    a.append(int(x[i]))

    n = ___________

    b.append(n)

for i in range(n-1):

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

        if (__________):

            _________________

            b[i], b[j] = b[j], b[i]

print(a)

print(b)

答案:

参考答案: ① n+1(5分)

② a[i] <a[j](5分)

③ a[i], a[j] = a[j], a[i](6分)

答案解析:

s = input()

x= s.split('、')

a = []

b = []

n = 0

for i in range(0, len(x)):

    a.append(int(x[i]))

    n = n + 1

    b.append(n)

for i in range(n-1):

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

        if (a[i] <a[j]):

            a[i], a[j] = a[j], a[i]

            b[i], b[j] = b[j], b[i]

print(a)

print(b)

38.有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

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

num = []

for i in range(n):

    num.append(    ①    )

i = 0

k = 0

m = 0

while m < n - 1:

    if     ②    : k += 1

    if k == 3:

        num[i] = 0

        k = 0

           ③    

    i += 1

    if i == n : i = 0

i = 0

while num[i] == 0:i += 1

print(    ④    )

答案:

参考答案: ①   i + 1            (3分)

②  num[i] != 0   (2分)

③   m += 1        (3分)

④   num[i]         (2分)

答案解析:n = int(input('请输入总人数:'))

num = []

for i in range(n):

    num.append(i + 1)

i = 0

k = 0

m = 0

while m < n - 1:

    if num[i] != 0 : k += 1

    if k == 3:

        num[i] = 0

        k = 0

        m += 1

    i += 1

    if i == n : i = 0

i = 0

while num[i] == 0:i += 1

print(num[i])
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值