Python二级考试题库与刷题app详尽指南(彻底掌握,轻松通关)--第七辑
刷 题软件(模拟python二级考试)
操作题刷题软件
公众号:露露IT
回复:*python二级
1.选择题
1、树的度为3,且有9个度为3的结点,5个度为1的结点,但没有度为2的结点。则该树中的叶子结点数为______。
A.33
B.19
C.18
D.32
解析:本题考查的知识点是树。在树中,结点数为树中所有结点的度之和再加1。n=n0+n1+n2+n3,n-1=n00+n11+n22+n33,根据00+n11+n22+n33+1=0+5+3*9+1=33,n0=33-9-5=19,计算得出叶子结点数n0=19。所以本题答案是B。
\
2、下列算法中,最坏情况下时间复杂度最低的是______。
A.有序表的对分查找
B. 寻找最大项
C.顺序查找
D.堆排序
\
解析:对于长度为n的有序线性表,在最坏情况下,二分查找的时间复杂度为O(log2n);顺序查找的时间复杂度为O(n);寻找最大项的时间复杂度为O(n-1);堆排序的时间复杂度为O(nlog2n)。所以本题答案是A。
\
3、树的度为3,且有9个度为3的结点,20个叶子结点,但没有度为1的结点。则该树总的结点数为______。
A.30
B.29
C.47
D.不可能有这样的树
\
解析:本题考查的知识点是树。在树中,结点数为树中所有结点的度之和再加1。所以n0+n1+n2+n3=n00+n11+n22+n33+1,0+0+n22+39+1=9+20+n2,计算得出度为2的结点数n2=1,所以该二叉树的总结点数为20+1+9=30。所以本题答案是A。
\
4、设二叉树的中序序列为BCDA,后序序列为DCBA,则前序序列为______。
A.ACDB
B.CBDA
C.BCDA
D.ABCD
\
解析:本题考查的是二叉树的遍历。二叉树前序遍历顺序是DLR,即先访问根结点,然后遍历左子树,最后遍历右子树,并且遍历子树的时候也按照DLR的顺序递归遍历。中序遍历顺序是LDR,即左-根-右,而后序遍历是左-右-根。由题面二叉树的中序序列为BCDA,后序序列为DCBA,可知A是根结点,且根结点A没有右子树。中序序列的左子树为BCD,后序序列的左子树为DCB,说明D是C的左子树,C是B的左子树,故该二叉树的前序序列为ABCD。所以本题答案是D。
5、对长度为8的数组进行快速排序,最多需要的比较次数为______。
A.28
B.64
C.56
D.8
\
解析:快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以达到整个序列有序。快速排序法的最坏情况比较次数是n(n-1)/2。本题中对长度为8的数组进行快速排序,需要比较的次数为8*(8-1)/2=28。所以本题答案是A。
\
6、树的度为3,且有9个度为3的结点,20个叶子结点,但没有度为1的结点。则该树中度为2的结点数为______。
A.7
B.0
C.1
D.不可能有这样的树
\
解析:本题考查的知识点是树。在树中,结点数为树中所有结点的度之和再加1。所以n0+n1+n2+n3=n00+n11+n22+n33+1,计算得出度为2的结点数n2=1。所以本题答案是C。
\
7、设线性表的长度为12。最坏情况下冒泡排序需要的比较次数为______。
A.66
B.78
C.144
D.60
\
解析:冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。冒泡排序法是一种最简单的交换类排序方法,它是通过相邻数据元素的交换逐步将线性表变成有序。所以本题答案是A。
\
8、设栈与队列初始状态为空。将元素A,B,C,D,E,F,G,H依次轮流入栈和入队,然后依次轮流退队和出栈,则输出序列为______。
A.B,G,D,E,F,C,H,A
B.G,B,E,D,C,F,A,H
C.D,C,B,A,E,F,G,H
D.A,B,C,D,H,G,F,E
\
解析:本题的考查知识点是栈和队列。栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素。这表明栈的运算规则是"先进后出"(或称"后进先出")。在栈顶进行插入运算,称为进栈(或入栈),在栈顶进行删除运算,称为退栈(或出栈)。队列是指允许在一端进行插入、而在另一端进行删除的线性表。在队列这种数据结构中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。因此队列又称为先进先出或后进后出的线性表。本题中,A,B,C,D,E,F,G,H依次轮流入栈和入队,栈中元素:A,C,E,G,队中元素:B,D,F,H。依次轮流退队和出栈,队列中输出元素B,栈中输出元素G,依次轮流进行输出,最后输出结果为:B,G,D,E,F,C,H,A。所以A选项正确。所以本题答案是A。
\
9、设元素集合为D={1,2,3,4,5,6}。B=(D,R)为线性结构所对应的R是______。
A.R={(4,5),(6,1),(5,6),(1,3),(2,4),(3,2)}
B. R={(6,1),(5,6),(1,3),(2,4),(3,2)}
C.R={(6,1),(5,6),(1,3),(3,4),(3,2)}
D.R={(6,1),(5,6),(2,3),(2,4),(3,2)}
\
解析:本题考查知识点是线性结构。线性结构需要满足的条件有:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件。没有前件的结点称为根结点;没有后件的结点称为终端结点(也称叶子结点)。选项B中5-->6-->1-->3-->2-->4符合线性结构的条件。所以本题答案是B。
\
10、循环队列的存储空间为Q(1:60),初始状态为空。经过一系列正常的入队与退队操作后,front=24,rear=25。循环队列中的元素个数为______。
A.1
B.2
C.59
D.60
\
解析:本题考查知识点是循环队列。循环队列是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。经过一系列的入队操作和退队操作后,头指针(front=24)尾指针(rear=25)说明入队25次,退队24次,此时队列中有一个元素,即队列中元素个数为1。所以本题答案是A。
\
11、下列选项能输出'Hello World'的是______。
A.print('Hello World')
B.print(Hello World)
C.printf("Hello World")
D.printf('Hello World')
\
解析:本题选A。
\
12、1、树的度为3,且有9个度为3的结点,5个度为1的结点,但没有度为2的结点。则该树中的叶子结点数为______。
A.33
B.19
C.18
D.32
\
解析:根据树的总结点数量不变可设叶子结点数为x,95+x = 93+51+0x+1。求得x = 19所以本题选B
\
13、以下关于二进制整数的定义,正确的是______。
A.0bC3F
B.0b1708
C.0B1019
D.0B1010
\
解析:二进制整数以0b引导,由字符0和1组成。本题选D。
\
14、以下关于Python语言浮点数类型的描述中,错误的是______。
A.Python语言要求所有浮点数必须带有小数部分
B.浮点数类型表示带有小数的类型
C.小数部分不可以为0
D.浮点数类型与数学中实数的概念一致
\
解析:Python语言中的浮点数类型必须带有小数部分,小数部分可以是0。本题选C。
\
15、以下变量名中,不符合Python语言变量命名规则的是______。
A.keyword_33
B.keyword33_
C.33_keyword
D._33keyword
\
解析:Python采用大写字母、小写字母、数字、下划线和汉字等字符及其组合进行命名,但名字的首字符不能是数字,标识符中间不能出现空格,长度没有限制。本题选C。
\
16、以下的描述中,不属于Python语言控制结构的是______。
A.循环结构
B.程序异常
C.跳转结构
D.顺序结构
\
顺解析:序结构、分支结构和循环结构是Python语言中3种最基本的控制结构。异常处理以程序异常为判断条件,根据一段代码执行的正确性进行程序逻辑选择,是分支结构的一种扩展。本题选C。
\
17、以下关于分支结构的描述中,错误的是______。
A.二分支结构有一种紧凑形式,使用保留字if和elif实现
B.if语句中条件部分可以使用任何能够产生True和False的语句和函数
C.if语句中语句块执行与否依赖于条件判断
D.多分支结构用于设置多个判断条件以及对应的多条执行路径
\
解析:二分支结构使用if-else保留字对条件进行判断,多分支结构使用if-elif-else保留字对多个相关条件进行判断本题选A。
\
18、以下代码的输出结果是______。
while True:
guess =eval(input())
if guess == 0x452//2:
break
print(guess)
\
A."0x452//2"
B.break
C.0x452
D.553
\
解析:运算符//表示计算整数商。当guess == 0x452//2条件成立时,跳出while循环,输出guess的值。0x452是16进制数,转换成十进制为41616+516+21=1106,则0x452//2的值为553。本题选D。
\
19、以下代码的输出结果是______。
for s in "testatest":
if s=="a" or s=='e':
continue
print(s, end='')
\
A.tsttst
B.testatest
C.testtest
D.tstatst
\
解析:continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环。由代码可知,当s=="a"或s=='e'条件成立时,跳出当前当次循环,不输出s的值,则最后的输出结果为tsttst。本题选A。
\
20、以下关于分支和循环结构的描述中,错误的是______。
A.所有的for分支都可以用while循环改写
B.While循环只能用来实现无限循环
C.可以终止一个循环的保留字是break
D.continue可以停止后续代码的执行,从循环的开头重新执行
\
解析:while循环也可以用来实现遍历循环。本题选B。
\
21、以下关于Python函数的描述中,错误的是______。
A.函数是一段可重用的语句组
B.每次使用函数需要提供相同的参数作为输入
C.函数通过函数名进行调用
D.函数是一段具有特定功能的语句组
\
解析:每次使用函数可以提供不同参数作为输入,以实现对不同数据的处理。本题选B。
\
22、函数中定义了2个参数,并且两个参数都指定了默认值,调用函数时参数个数最少是______。
A.0
B.2
C.1
D.3
\
解析:函数的参数在定义时可以指定默认值,当函数被调用时,如果没有传入对应的参数值,则使用函数定义时的默认值替代,则调用函数时,参数个数最少是0。本题选A。
\
23、以下关于Python函数的描述中,正确的是______。
A.一个函数中只允许有一条return语句
B.Python中,def和return是函数必须使用的保留字
C.Python函数定义中没有对参数指定类型,这说明,参数在函数中可以当作任意类型使用
D.函数eval()可以用于数值表达式求值,例如eval("2*3+1")
\
解析:函数eval()的作用是去掉字符串最外侧的引号,并按照Python语句方式执行去掉引号后的字符内容。本题选D。
\
25、以下关于Python全局变量和局部变量的描述中,错误的是______。
A.全局变量在程序执行的全过程有效
B.全局变量一般没有缩进
C.全局变量不能和局部变量重名
D.一个程序中的变量包含两类:全局变量和局部变量
\
解析:全局变量和局部变量可以重名。本题选C。
\
26、以下的函数定义中,错误的是______。
A.def vfunc(a,b=2):
B.def vfunc(a,b):
C.def vfunc(a,*b):
D.def vfunc(*a,b):
\
解析:可选参数一般都放置在非可选参数的后面,即定义函数时,先给出所有非可选参数,然后再分别列出每个可选参数及对应的默认值。"def vfunc(*a,b):"函数定义错误,参数位置出错。本题选D。
\
27、以下代码的输出结果是______。
ls=[[1,2,3],[[4,5],6],[7,8]]
print(len(ls))
\
A.3
B.1
C.4
D.8
\
解析:len(ls):列表ls中的元素个数(长度)。代码执行后的输出结果是3,即ls=[[1,2,3],[[4,5],6],[7,8]]的长度为3。本题选A。
\
28、以下代码的输出结果是______。
ls = ["2020", "20.20", "Python"]
ls.append(2020)
ls.append([2020, "2020"])
print(ls)
\
A.['2020', '20.20', 'Python', 2020]
B.['2020', '20.20', 'Python', 2020, [2020, '2020']]
C.['2020', '20.20', 'Python', 2020, 2020, '2020']
D.['2020', '20.20', 'Python', 2020, ['2020']]
\
解析:ls.append(x):在列表ls最后增加一个元素x。代码执行后的输出结果为['2020', '20.20', 'Python', 2020, [2020, '2020']]。本题选B。
\
29、以下代码的输出结果是______。
d ={"大海":"蓝色", "天空":"灰色", "大地":"黑色"}
print(d["大地"], d.get("大地", "黄色"))
\
A.黑色 黑色
B.黑色 灰色
C.黑色 黄色
D.黑色 蓝色
\
解析:d.get(key,default):键存在则返回相应值,否则返回默认值default。代码执行后的输出结果:黑色 黑色。本题选A。
\
30、以下选项,错误的是______。
A.Python的str、tuple和list类型都属于序列类型
B.组合数据类型可以分为3类:序列类型、集合类型和映射类型
C.Python组合数据类型能够将多个数据组织起来,通过单一的表示使数据操作更有序、更容易理解
D.序列类型是二维元素向量,元素之间存在先后关系,通过序号访问
\
解析:序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。本题选D。
\
31、以下代码的输出结果是______。
d = {}
for i in range(26):
d[chr(i+ord("a"))] = chr((i+13) % 26 + ord("a"))
for c in "Python":
print(d.get(c,c), end="")
\
A.Pabugl
B.Plguba
C.Cabugl
D.Python
\
解析:Python通过保留字for实现遍历循环,使用方法如下: for <循环变量> in <遍历结构> <语句块> 遍历循环可以理解为从遍历结构中逐一提取元素,放在循环变量中,对于每个所提取的元素执行一次语句块。for语句的循环执行次数是根据遍历结构中元素个数确定的。 chr(x)返回Unicode编码x对应的单字符,ord(x)返回单字符x表示的Unicode编码。 代码一开始生成一个空字典,第一个for循环用于向其中添加字典元素。range(26)表示i的取值范围是0至25之间的整数(包括0与25)。"a"对应的Unicode编码为97。 i=0时,chr(ord("a"))='a',chr((13) % 26 + ord("a"))=chr(13+97)= 'n',则第三行赋值语句简化为d['a']='n',此时字典d为{'a': 'n'}。 i=1时,chr(1+ord("a"))= 'b',chr((1+13) % 26 + ord("a"))=chr(14+97)= 'o',则第三行赋值语句简化为d['b']='o',此时字典d为{'a': 'n', 'b': 'o'}。 依次类推,最后得出字典d为{'a': 'n', 'b': 'o', 'c': 'p', 'd': 'q', 'e': 'r', 'f': 's', 'g': 't', 'h': 'u', 'i': 'v', 'j': 'w', 'k': 'x', 'l': 'y', 'm': 'z', 'n': 'a', 'o': 'b', 'p': 'c', 'q': 'd', 'r': 'e', 's': 'f', 't': 'g', 'u': 'h', 'v': 'i', 'w': 'j', 'x': 'k', 'y': 'l', 'z': 'm'},简而言之,每个字母键对应的是Unicode编码比自己大13的字母值。本题选B。
\
32、以下关于Python二维数据的描述中,错误的是______。
A.从CSV文件获得数据内容后,可以用replace()来去掉每行最后的换行符
B.CSV文件的每一行是一维数据,可以用列表、元组和字典表示
C.若一个列表变量里的元素都是字符串类型,则可以用join()合成字符串
D.列表中保存的二维数据,可以通过循环用write()写入CSV文件
\
解析:高维数据由键值对类型的数据构成,采用对象方式组织,可以多层嵌套。高维数据相比一维和二维数据能表达更加灵活和复杂的数据关系,可以用字典类型表示。一维数据不用字典类型来表示。本题选B。
\
33、不属于Python文件读操作的是______。
A.readtext
B.readline
C.readlines
D.read
\
解析:Python文件读操作的方法: f.read(size):从文件中读入整个文件内容。参数可选,如果给出,读入前size长度的字符串或字节流。 f.readline(size):从文件中读入一行内容。参数可选,如果给出,读入该行前size长度的字符串或字节流。 f.readlines(hint):从文件中读入所有行,以每行为元素形成一个列表。参数可选,如果给出,读入hint行。 f.seek(offset):改变当前文件操作指针的位置,offset的值:0为文件开头;1为当前位置;2为文件结尾。本题选A。
\
34、文件book.txt在当前代码所在目录内,其内容是一段文本:book,以下代码的输出结果是______。
txt = open("book.txt", "r")
print(txt)
txt.close()
\
A.非其他答案
B.book.txt
C.txt
D.book
\
解析:open()方法的作用是打开一个文件,而所给的代码未对文件book.txt进行读写操作,直接关闭,运行后输出<_io.TextIOWrapper name='book.txt' mode='r' encoding='cp936'>。本题选A。
\
35、假设city.csv文件内容如下______。
巴哈马,巴林,孟加拉国,巴巴多斯
白俄罗斯,比利时,伯利兹
以下代码的输出结果是:
f = open("city.csv", "r")
ls = f.read().split(",")
f.close()
print(ls)
\
A.['巴哈马, 巴林, 孟加拉国, 巴巴多斯, 白俄罗斯, 比利时, 伯利兹']
B.['巴哈马', '巴林', '孟加拉国', '巴巴多斯', '白俄罗斯', '比利时', '伯利兹']
C.['巴哈马', '巴林', '孟加拉国', '巴巴多斯\n白俄罗斯', '比利时', '伯利兹']
D.['巴哈马', '巴林', '孟加拉国', '巴巴多斯', '\n', '白俄罗斯', '比利时', '伯利兹']
\
解析:f.read(size):从文件中读入整个文件内容。参数可选,如果给出,读入前size长度的字符串或字节流。 split(str,num)通过指定分隔符对字符串进行切片,如果参数num有指定值,则仅分隔num个子字符串。 f.read().split(","):从文件中读入整个文件内容,并以逗号分隔。原文的第一行后有一个换行符"\n",所以读入文件内容时,这里的字符串应为"巴巴多斯\n白俄罗斯"。 运行代码后的输出结果是['巴哈马', '巴林', '孟加拉国', '巴巴多斯\n白俄罗斯', '比利时', '伯利兹']。本题选C。
\
36、以下代码的输出结果是______。
fo = open("book.txt","w")
ls = ['book','23','201009','20']
fo.writelines(ls)
fo.close()
\
A.[book,23,201009,20]
B.book,23,201009,20
C.book2320100920
D.['book','23','201009','20']
\
解析:fo.writelines(lines)方法的含义是将一个元素为字符串的列表整体写入文件。代码运行后的输出结果是book2320100920。本题选C。
\
37、在读写文件之前,需要打开文件使用的函数是______。
A.open
B.fopen
C.file
D.CFile
\
解析:Python通过open()函数打开一个文件,并返回一个操作这个文件的变量,语法形式如下: <变量名>=open(<文件路径及文件名>,<打开模式>)本题选A。
\
38、不属于Python开发用户界面第三方库的是______。
A.wxPython
B.PyQt5
C.turtle
D.PyGTK
\
解析:Python语言中开发用户界面方向的第三方库:PyQt5、wxPython、PyGTK,而turtle库是python的标准库之一。本题选C。
\
39、不属于Python数据分析及可视化处理第三方库的是______。
A.mxnet
B.pandas
C.mayavi2
D.numpy
\
解析:Python语言中数据分析方向的第三方库:numpy、scipy、pandas。 Python语言中数据可视化析方向的第三方库:matplotliB、TVTK、mayavi。 mxnet是Python语言中深度学习方向的第三方库。本题选A。
\
40、不属于Python用于Web开发第三方库的是______。
A.flask
B.django
C.scrapy
D.pyramid
\
解析:Python语言中Web开发框架第三方库有Flask、Django、Pyramid,而scrapy是python网络爬虫方向的第三方库。本题选C