全国青少年编程能力等级考试-python二级试卷_样题-2020.12.30.pdf
全国青少年编程能力等级考试 Python 编程(二级)样题 一、单项选择题(共 20 题,每题 3.5 分,共 70 分) P1_1.下列关于代码复用和程序抽象的描述中,正确的是( )。 A.代码复用会导致程序代码大量重复,但程序的抽象性很好 B.设计良好的函数有助于代码的复用和程序的抽象 C.程序的主要目的是解决问题,只要能解决问题,无需考虑复用和抽象 D.使用函数不能实现代码重用 P2_1.下列关于 Python 函数的叙述中,正确的是( )。 A.使用 def 关键字定义函数 B.一个函数中有且只能有一条 return 语句 C.函数中不可以嵌套定义函数 D.定义函数时的参数称为实际参数,简称实参 P3_1.在 Python 中,执行下列函数定义代码后,叙述正确的是( )。 def demo3(a): return a * 3 A.demo3(3) 的返回值为 9 B.demo3("3") 的返回值为 '3' C.demo3() 的返回值是 'aaa' D.demo3("b", 3) 的返回值是 'bbb' P4_1.下列定义的函数 demo4 中,能接收 3 个数值型参数,并返回最大值的是( )。 A. def demo4(a, b, c): if ab and a>c: return a if b>a and b>c: return b else: return c C. def demo4(): a = eval(input()) b = eval(input()) c = eval(input()) if a>b and a>c: return a if b>a and b>c: return b if c>a and c>b: return c D. def demo4(a, b=2, c=3): if a>b and a>c: return a if b>a and b>c: return b else: return c P5_1.下列关于递归函数的叙述中,正确的是( )。 A.递归函数一般都有比较高的执行效率 B.递归函数通过循环结构实现自身的调用 C.正确的递归函数必须有终止无限递归的边界条件 D.同一功能的函数,一般来讲,用递归实现比用循环实现需要更多的代码 P6_1.执行下列代码段的结果是( )。 def demo6(n): if n <= 1: return 1 elif n in (2, 3, 4): return n * demo6(n - 2) else: return n * demo6(n - 3) print(demo6(6)) A.16 B.17 C.18 D.19 P7_1.下列关于 Python 文件操作的叙述中,正确的是( )。 A.open 是 Python 中打开文件的关键字 B.使用 f = open("a.txt ") 打开的文件,使用 close(f) 可以关闭 a.txt 文件 C.使用 f = open("a.txt", "wt") ,参数"w"表示可以对 a.txt 文件进行写操作 D.Python 的 open 只能打开文本文件 P8_1.已有 f = open("a.txt", "rt") ,下列叙述正确的是( )。 A.f.read() 可以以字符串形式返回 a.txt 文件中的所有数据 B.f.readline() 可按行以列表的形式返回 a.txt 文件中的所有数据 C.f.seek() 可以让 f 回到打开的文件头部 D.f.write("Hello,world.") 可以将一行字符串数据写入 a.txt 文件中 P9_1.已有 a.txt 文件,文件中只有一行文本数据“你好,世界。”,执行下列代码段后, a.txt 中的内容是( )。 f = open("a.txt", "w") f.write("Hello\nworld") f.close() A. Hello\nworld B. 你好,世界。 Hello world C. 你好,世界。Hello world D. Hello world P10_1.同一目录下仅有两个文件 a.py 和 b.py,a.py 中只有一行代码 n = 15,下 列代码段可以作为 b.py 内容,运行后输出 25 的是( )。 A. import a.py b = 10 print(a.a + b) B. import a b = 10 print(a.a + b) C. import a a = 10 print(a.a + a) D. import a print(a + 10) P11_1.下列关于 Python 面向对象编程的叙述中,不 .正确 ..的是( )。 A.对象的两个要素是:属性和方法 B.对象是模板,类是对象的具体化 C.继承是代码复用的一个重要方法 D.Python 使用关键字 class 定义类 P12_1.运行下列代码段,叙述正确的是( )。 class Car(object): color = "red" numOfWheels = 4 def beep(self): print("Beep! beep!") car1 = Car() A.使用 car1.color 可以得到值 'red' B.使用 car1.color('blue') 可以将 car1 的 color 属性修改为 'blue' C.使用 car1.beep 可以得到输出数据 Beep! Beep! D.使用 print(car1.numOfWheels()) 可以得到输出值 4 P13_1.下列关于 Python 包的叙述中,正确的是( )。 A.Python 中的模块是包的集合体 B.Python 包文件夹下必须存在一个名为 __init__.py 的文件 C.Python 中的包和模块含义相同 D.Python 中包的不足在于无法使用 import 引入到其他代码中使用 P14_1.运行下列代码段,输出的结果是( )。 a = 15 def out(n): a = 10 print(a + n) m = a out(m) A.20 B.30 C.25 D.程序运行时会报错 P15_1.下列关于查找获取第三方库的叙述中,不 .正确 ..的是( )。 A.从 pypi.org 网站可以检索获取大量的第三方库 B.pip 工具是一种常用的安装第三方库工具 C.部分第三方库提供 whl 安装文件,安装时可以不依赖网络 D.第三方库与 Python 版本无关 P16_1.下列关于第三方库的使用叙述中,正确的是( )。 A.jieba 库是 Python 中使用广泛的中文分词库 B.pyinstaller 库可以将 Python 源文件打包为可执行文件 C.wordcloud 库用于统计英文词频 D.jieba 库的 cut 和 lcut 方法都可以将中文语句切分为词 P17_1.运行下列代码段,输入 123 后,输出的结果是( )。 s = input() s1 = "" for c in s: s1 = s1 + chr(ord(c)+1) print(s1) A.231 B.234 C.124 D.126 P18_1.运行下列代码段,输出的结果是( )。 li01 = [1, 1, 2, 3, 1, 2, 3, 3] t01 = tuple(li01) set01 = set(li01) print(len(t01)) print(len(set01)) print(4 in set01) A. 8 8 False B. 3 8 True C. 8 3 True D. 8 3 False P19_1.运行下方代码后,下列叙述正确的是( )。 import random A.random.randint(0,10) 返回一个 0 到 10 之间(包含 0 但不包含 10)的随机整数 B.random.choice(1,10) 返回一个 1 到 10 之间(包含 1 和 10)的随机整数 C.random.random() 返回一个 0 到 1 之间(包含 0 但不包含 1)的随机小数 D.random.randrange(0,10) 返回一个 0 到 10 之间(包含 0 和 10)的随机整数 P20_1.运行下方代码后,下列叙述正确的是( )。 import time A.使用代码段运行前后的 time.time()值的差,可以描述这段儿代码的运行时间 B.time.sleep(100) 可以让程序暂停 100 毫秒 C.time.time() 用于获取自 1900 年 1 月 1 日 到当前时间所经历的秒数 D.time 库的 localtime 方法可以按指定控制日期时间的输出样式 二、编程题(共 3 题,每题 10 分,共 30 分) P21_1.编写程序实现求解鸡兔同笼问题,要求如下: 1.使用两次 int(input()) 接收用户输入的两个整数型数据; 2.将按顺序接收的第一个数据作为鸡和兔的总头数,第二个数据作为鸡和兔的总脚数,求 鸡和兔各自的个数; 3.按顺序输出鸡和兔的个数(整数) ,每个数字单独占一行。 说明:(1)input() 函数中不要增加任何提示用参数; (2)输出结果不要使用任何空格等空白字符修饰。 输入示例: 25 70 输出示例: 15 10 P22_1.编写程序,使用自定义函数实现求整数阶乘,要求如下: 1.阶乘的函数名为:fac ; 2.fac 函数的参数:一个,非负整数,参数名不限; 3.fac 函数的返回值:一个,非负整数,参数的阶乘值; 4.提交的代码只应为函数的定义和功能代码,不应包含任何输入、输出语句及测试代码; 说明: (1)正整数的阶乘值是指所有小于及等于该数的正整数的乘积,如 4 的阶乘值 为 1 * 2 * 3 * 4 ,即 24; (2)0 和 1 的阶乘值均为 1; 输入示例: 5 输出示例: 120 P23_1.修改并调试已提供的代码,使其正确运行并完成如下功能: 1.程序打开并读取系统提供的 num.txt 中的数据(num.txt 中只有一个整型数据); 2.程序将读取的数据转换为整数类型,并作为 random.seed 的参数; 3.程序中的自定义函数 gen_num() 用于生成 5 个介于 1 到 10 之间的整数,并按生成顺 序存入列表 li 中,并将 li 的值返回; 4.程序对列表 li 进行原地由大到小排序; 5.最后将排序后的列表原样输出。 请按代码中注释语句提示,修改或编写代码,调试代码使其正确运行。 例如: num.txt 中的数据为 5 。 最终的输出结果为: [10, 9, 6, 5, 1] 原始代码如下: import random def gen_num(): li01 = [] for i in range(5): li01.append(random.randint(1,10)) # 请在本行下方补充适当的语句 # 请在本行上方补充适当的语句 # 请修改下方代码,使其能正确运行 f = open(num.txt, "rt") # 请修改上方代码,使其能正确运行 n = int(f.read()) f.close() random.seed(n) li = gen_num() # 请在本行下方为列表 li 排序,由大到小 # 请在本上上方为列表 li 排序,由大到小 print(li)