全国计算机等级考试二级Python真题及解析(5)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全国计算机等级考试二级Python真题及解析(5)
一、选择题
1. 关于二叉树的遍历,以下选项中描述错误的是
A二叉树的遍历可以分为三种:前序遍历、中序遍历、后序遍历
B前序遍历是先遍历左子树,然后访问根结点,最后遍历右子树
C后序遍历二叉树的过程是一个递归的过程
D二叉树的遍历是指不重复地访问二叉树中的所有结点
正确答案: B
2. 关于二叉树的描述,以下选项中错误的是
A二叉树具有两个特点:非空二叉树只有一个根结点;每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树
B在任意一棵二叉树中,度为0的结点(叶子结点)比度为2的结点多一个
C深度为m的二叉树最多有2的m次幂个结点
D二叉树是一种非线性结构
正确答案: C
3. 关于查找技术的描述,以下选项中错误的是
A如果采用链式存储结构的有序线性表,只能用顺序查找
B二分查找只适用于顺序存储的有序表
C顺序查找的效率很高
D查找是指在一个给定的数据结构中查找某个特定的元素
正确答案: C
4. 关于排序技术的描述,以下选项中错误的是
A选择排序法在最坏的情况下需要比较n(n–1)/2次
B快速排序法比冒泡排序法的速度快
C冒泡排序法是通过相邻数据元素的交换逐步将线性表变成有序
D简单插入排序在最坏的情况下需要比较n的1.5幂次
正确答案: D
5. 关于面向对象的程序设计,以下选项中描述错误的是
A面向对象方法可重用性好
B Python 3.x 解释器内部采用完全面向对象的方式实现
C用面向对象方法开发的软件不容易理解
D面向对象方法与人类习惯的思维方法一致
正确答案: C
6. 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是
A需求设计
B详细设计
C可行性分析
D概要设计
正确答案: A
7. 以下选项中,用于检测软件产品是否符合需求定义的是
A集成测试
B验证测试
C验收测试
D确认测试
正确答案: C
8. 在PFD图中用箭头表示
A数据流
B调用关系
C组成关系
D控制流
正确答案: D
9. 关于软件调试方法,以下选项中描述错误的是
A软件调试可以分为静态调试和动态调试
B软件调试的主要方法有强行排错法、回溯法、原因排除法等
C软件调试的目的是发现错误
D软件调试的关键在于推断程序内部的错误位置及原因
正确答案: C
10. 关于数据库设计,以下选项中描述错误的是
A数据库设计可以采用生命周期法
B数据库设计是数据库应用的核心
C数据库设计的四个阶段按顺序为概念设计、需求分析、逻辑设计、物理设计
D数据库设计的基本任务是根据用户对象的信息需求、处理需求和数据库的支持环境设计出数据模式
正确答案: C
11. 以下选项中值为False的是
A 'abc' <'abcd'
B ' ' <'a'
C 'Hello' >'hello'
D 'abcd' <'ad'
正确答案: C
12. Python语言中用来定义函数的关键字是
A return
B def
C function
D define
正确答案: B
13. 以下选项中,对文件的描述错误的是
A文件中可以包含任何数据内容
B文本文件和二进制文件都是文件
C文本文件不能用二进制文件方式读入
D文件是一个存储在辅助存储器上的数据序列
正确答案: C
14. ls = [3.5, "Python", [10, "LIST"], 3.6],ls[2][ –1][1]的运行结果是
A I
B P
C Y
D L
正确答案: A
15. 以下用于绘制弧形的函数是
A turtle.seth()
B turtle.right()
C turtle.circle()
D turtle.fd()
正确答案: C
16. 对于turtle绘图中颜色值的表示,以下选项中错误的是
A (190, 190, 190)
B BEBEBE
C #BEBEBE
D “grey”
正确答案: B
17. 以下选项中不属于组合数据类型的是
A变体类型
B字典类型
C映射类型
D序列类型
正确答案: A
18. 关于random库,以下选项中描述错误的是
A设定相同种子,每次调用随机函数生成的随机数相同
B通过from random import *可以引入random随机库
C通过import random可以引入random随机库
D生成随机数之前必须要指定随机数种子
正确答案: D
19. 关于函数的可变参数,可变参数*args传入函数时存储的类型是
A list
B set
C dict
D tuple
正确答案: D
20. 关于局部变量和全局变量,以下选项中描述错误的是
A局部变量和全局变量是不同的变量,但可以使用global保留字在函数内部使用全局变量
B局部变量是函数内部的占位符,与全局变量可能重名但不同
C函数运算结束后,局部变量不会被释放
D局部变量为组合数据类型且未创建,等同于全局变量
正确答案: C
21.
下面代码的输出结果是
ls = ["F","f"]def fun(a):
ls.append(a)
return
fun("C")print(ls)
A ['F', 'f']
B ['C']
C 出错
D ['F', 'f', 'C']
正确答案: D
22. 关于函数作用的描述,以下选项中错误的是
A复用代码
B增强代码的可读性
C降低编程复杂度
D提高代码执行速度
正确答案: D
23. 假设函数中不包括global保留字,对于改变参数值的方法,以下选项中错误的是
A参数是int类型时,不改变原参数的值
B参数是组合类型(可变对象)时,改变原参数的值
C参数的值是否改变与函数中对变量的操作有关,与参数类型无关
D参数是list类型时,改变原参数的值
正确答案: C
24. 关于形参和实参的描述,以下选项中正确的是
A参数列表中给出要传入函数内部的参数,这类参数称为形式参数,简称形参
B函数调用时,实参默认采用按照位置顺序的方式传递给函数,Python也提供了按照形参名称输入实参的方式
C程序在调用时,将形参复制给函数的实参
D函数定义中参数列表里面的参数是实际参数,简称实参
正确答案: B
25. 以下选项中,正确地描述了浮点数0.0和整数0相同性的是A它们使用相同的计算机指令处理方法
B它们具有相同的数据类型
C它们具有相同的值
D它们使用相同的硬件执行单元
正确答案: C
26. 关于random.uniform(a,b)的作用描述,以下选项中正确的是A生成一个[a, b]之间的随机小数
B生成一个均值为a,方差为b的正态分布
C生成一个(a, b)之间的随机数
D生成一个[a, b]之间的随机整数
正确答案: A
27. 关于Python语句P = –P,以下选项中描述正确的是
A P和P的负数相等
B P和P的绝对值相等
C给P赋值为它的负数
D .P的值为0
正确答案: C
28. 以下选项中,用于文本处理方向的第三方库是
A pdfminer
B TVTK
C matplotlib
D mayavi
正确答案: A
29. 以下选项中,用于机器学习方向的第三方库是
A jieba
B SnowNLP
C loso
D TensorFlow
正确答案: D
30. 以下选项中,用于Web开发方向的第三方库是
A Panda3D
B cocos2d
C Django
D Pygame
正确答案: C
31.
下面代码的输出结果是
x = 0x0101print(x)
A 101
B 257
C 65
D 5
正确答案: B
32.
下面代码的输出结果是
sum = 1.0for num in range(1,4):
sum+=numprint(sum)
A 6
B 7.0
C 1.0
D 7
正确答案: B
33. 下面代码的输出结果是
a = 4.2e–1
b = 1.3e2print(a+b)
A 130.042
B 5.5e31
C 130.42
D 5.5e3
正确答案: C
34.
下面代码的输出结果是
name = "Python语言程序设计"print(name[2: –2])
A thon语言程序
B thon语言程序设
C ython语言程序
D ython语言程序设
正确答案: A
35. 下面代码的输出结果是
weekstr = "星期一星期二星期三星期四星期五星期六星期日" weekid = 3print(weekstr[weekid*3: weekid*3+3])
A 星期二
B星期三
C星期四
D星期一
正确答案: C
36.
下面代码的输出结果是
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]
正确答案: B
37.下面代码的输出结果是
for s in "abc":
for i in range(3):
print (s,end="")
if s=="c":
break
A aaabccc
B aaabbbc
C abbbccc
D aaabbbccc
正确答案: B
38.下面代码的输出结果是
for i in range(10):if i%2==0: continueelse:print(i, end=",")
A 2,4,6,8,
B 0,2,4,6,8,
C 0,2,4,6,8,10,
D 1,3,5,7,9,
正确答案: D
39. 下面代码的输出结果是
ls = list(range(1,4))print(ls)
A{0,1,2,3}
B[1,2,3]
C{1,2,3}
D[0,1,2,3]
正确答案: B
40.下面代码的输出结果是def change(a,b):
a = 10
b += a
a = 4
b = 5
change(a,b)print(a,b)
A 10 5
B 4 15
C 10 15
D 4 5
正确答案: D
二、操作题
1.编写程序,从键盘上获得用户连续输入且用逗号分隔的若干个数字(不必以逗号结尾),计算所有输入数字的和并输出,给出代码提示如下。
n = input()
nums = ____①____
s = 0for i in nums:
____②____print(s)
输入输出示例
习题讲解
参考代码
n = input("")
nums = n.split(",")
s = 0for i in nums:
s += eval(i)print(s)
2.编写程序,获得用户输入的数值 M 和 N,求 M 和 N 的最大公约数。
提示代码如下。
def GreatCommonDivisor(a,b):
if a > b:
a,b = b,a
r = 1
while r != 0:
____①____
a = b
b = r
return a
m = eval(input())
n = eval(input())print(____②____)
输入输出示例
参考代码
def GreatCommonDivisor(a,b):
if a > b:
a,b = b,a
r = 1
while r != 0:
r = a % b
a = b
b = r
return a
m = eval(input())
n = eval(input())print(GreatCommonDivisor(m,n))
3.jieba 是一个中文分词库,一些句子可能存在多种分词结果,请补充横线处代码,产生字符串 s 可能的所有分词结果列表,提示代码如下。
____①____
s = "世界冠军运动员的乒乓球拍卖完了"
ls = jieba.lcut(____②____)print(ls)
习题讲解
参考代码
import jieba
s = "世界冠军运动员的乒乓球拍买完了"
ls = jieba.lcut(s,True)print(ls)
4.使用 turtle 库的 turtle.circle() 函数、turtle.seth() 函数和 turtle.left() 函数绘
制一个四瓣花图形,效果如下图所示。
请结合程序整体框架,补充横线处代码,从左上角花瓣开始,逆时针作画。
import turtle as tfor i in range(____①____):
t.seth(____②____)
t.circle(200, 90)
t.seth(____③____)
t.circle(200, 90)
---------------------------------------------
自动评阅说明
依次以字符串形式输入____①____,____②____,____③____ 中应填的代码,即可自动评阅,运算符两侧需要加空格
如果代码为:
import turtle as tfor i in range(100):
t.seth(i + 100)
t.circle(200, 90)
t.seth(-10 * (i + 100))
t.circle(200, 90)
则在提交代码页面输入: print("100", "i + 100", "-10 * (i + 100)")
习题讲解
参考代码
import turtle as tfor i in range(4):
t.seth(90 * (i + 1))
#90,180,270,360
t.circle(200,90)
#-90,0,90,180
t.seth(-90 + i * 90)
t.circle(200,90)
5.编写程序,实现将列表 ls =
[23,45,78,87,11,67,89,13,243,56,67,311,431,111,141] 中的素数去除,并输出去除素数后列表 ls 的元素个数。
请结合程序整体框架,补充横线处代码。
def is_prime(n):
____①____ #此处可为多行函数定义代码
ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]for i in ls.copy():
if is_prime(i)== True:
____②____ #此处为一行代码print(len(ls))
习题讲解
参考代码
def is_prime(n):
for i in range(2,n):
if n % i == 0:
return False
return True
ls = [23,45,78,87,11,67,89,13,243,56,67,311,431,111,141]for i in ls:
if is_prime(i)== False:
ls.remove(i)print(len(ls))
6.古代航海人为了方便在航海时辨别方位和观测天象,将散布在天上的星星运用想象力将它们连接起来,有一半是在古时候已命名,另一半是近代开始
命名的。
两千多年前古希腊的天文学家希巴克斯命名十二星座,依次为白羊座、金牛座、双子座、巨蟹座、狮子座、处女座、天秤座、天蝎座、射手座、魔蝎座、水瓶座和双鱼座。
给出二维数据存储CSV文件(SunSign.csv),内容如下:星座,开始月日,结束月日,Unicode
水瓶座,120,218,9810
双鱼座,219,320,9811
白羊座,321,419,9800
金牛座,420,520,9801
双子座,521,621,9802
巨蟹座,622,722,9803
狮子座,723,822,9804
处女座,823,922,9805
天秤座,923,1023,9806
天蝎座,1024,1122,9807
射手座,1123,1221,9808
魔蝎座,1222,119,9809
请编写程序,读入CSV文件中数据,循环获得用户输入,直至用户输入"exit" 退出。
根据用户输入的星座名称,输出此星座的出生日期范围及对应字符形式。
如果输入的星座名称有误,请输出“输入星座名称有误!”。
习题讲解
参考代码
#读入CSV格式数据到列表中
fo = open("SunSign.csv","r", encoding='utf-8')
ls = []for line in fo:
line = line.replace("\n","")
ls.append(line.split(","))
fo.close()
while True:
InputStr = input() # 请输入星座名称,例如双子座
InputStr.strip()
flag = False
if InputStr == 'exit':
break
for line in ls:
if InputStr == line[0]:
print("{}座的生日位于{}-{}之间。
".format(chr(eval(line[3])),line[1],line[2])) flag = True
if flag == False:
print("输入星座名称有误!")。