声明:例题均来源于网络,仅供学习笔记,若涉侵权请联系删除。所属练题来源于《小黑课堂》
一、选择题
1、下列叙述中正确的是()。
A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
D.以上说法均不正确
【题目解析】
在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈跟队列不同,元素只能在栈顶压入或弹出,栈底指针不变,栈中元素随栈顶指针的变化而动态变化,遵循后进先出的规则,所以选C。
2、循环队列的存储空间为Q(1:50)。经过一系列正常的入队与退队操作后,front=rear=25。后又成功地将一个元素退队,此时队列中的元素个数为()。
A.24
B.49
C.26
D.0
【题目解析】
当front=rear时可知队列要么为空要么队列满,题目又成功地将一个元素退队,说明之前队列为满(为空时队列中无元素),退出一个元素后队列中还有50-1=49个元素。本题选B选项。
3、某二叉树共有730个结点,其中度为1的结点有30个,则叶子结点个数为()。
A.351
B.1
C.350
D.不存在这样的二叉树
【题目解析】
在二叉树中,总结点数=叶子结点数+度为1的结点数+度为2的结点数,所以度为0和度为2的结点,共有730-30=700个,而二叉树又有如下性质:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。所以度为0的结点个数加上度为2的结点个数之和一定是奇数,不可能是700,所以选D。
4、给出二叉树前序序列为ABDEGCFH,中序序列为DBGEAFHC,则该二叉树后序序列为
A.ABDEGCFH
B.DBGEAFHC
C.DGEBHFCA
D.ABCDEFGH
【题目解析】
二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中前序遍历为ABDEGCFH,中序遍历为DBGEAFHC,后序遍历为DGEBHFCA,所以为C。
5、下面不属于软件工程三要素的是()。
A.环境
B.工具
C.过程
D.方法
【题目解析】
软件工程包含3个要素:方法、工具和过程。本题选A选项。
6、软件集成测试不采用()。
A.自顶向下增量组装
B.自底向上增量组装
C.迭代式组装
D.一次性组装
【题目解析】
集成测试时将模块组装成程序通常采用两种方式:非增量方式组装与增量增量方式组装。非增量方式也称为一次性组装方式;增量方式又分为自顶向下,自底向上,自顶向下与自底向上相结合的混合增量方法,所以选C。
7、下面属于“对象”成份之一的是()。
A.封装
B.规则
C.属性
D.继承
【题目解析】
面向对象方法中的对象由两部分组成:①数据,也称为属性,即对象所包含的信息,表示对象的状态;②方法,也称为操作,即对象所能执行的功能、所能具有的行为。本题选C选项。
8、数据流图(DFD)的作用是()。
A.支持软件系统功能建模
B.支持软件系统的面向对象分析
C.描述软件系统的控制流
D.描述软件系统的数据结构
【题目解析】
数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模,所以选A。
9、实体电影和实体演员之间的联系是()。
A.一对一
B.多对多
C.多对一
D.一对多
【题目解析】
一部电影可由多名演员参演,一名演员可以参演多部电影,因此实体电影和实体演员之间的联系是多对多。本题选B选项。
10、定义学生的关系模式如下:S(S#,Sn,Sex,Age,D#,Da)(其属性分别为学号、姓名、性别、年龄、所属学院、院长)该关系的范式最高是()。
A.1NF
B.2NF
C.3NF
D.BCNF
【题目解析】
关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同的范式。满足最低要求的叫第一范式,简称1NF。在满足第一范式的基础上,进一步满足更多要求规范则是第二范式。然后在满足第二范式的基础上,还可以再满足第三范式,以此类推。对于关系模式,若其中的每个属性都已不能再分为简单项,则它属于第一范式。若某个关系R为第一范式,并且R中每一个非主属性完全依赖于R的某个候选键,则称其为第二范式。第二范式消除了非主属性对主键的部分依赖如果关系R是第二范式,并且每个非主属性都不传递依赖于R的候选键,则称R为第三范式。(传递依赖:在关系模式中,如果Y→X,X→A,且X不决定Y和A不属于X,那么Y→A是传递依赖。)本题中,关系S满足第一范式和第二范式,但是S#→D#,D#→Da,存在传递依赖,因此不满足第三范式。该关系的范式最高是2NF。本题选B选项。
11、以下选项中Python用于异常处理结构中用来捕获特定类型的异常的保留字是()。
A.while
B.except
C.pass
D.do
【题目解析】
保留字,也称关键字,是指被编程语言内部定义并保留使用的标识符。Python3.x版本中有35个保留字,while用来构建循环,except用来捕获异常,pass表示空语句,本题选B选项
12、以下选项中符合Python语言变量命名规则的是()。
A.¥1
B.5_10
C.Templist
D.He!!o
【题目解析】
表示符命名规则是字母数字下划线,数字不能作为开头。除下划线,不要有其他字符。所以本题选C。
13、以下关于Python字符串的描述中,错误的是()。
A.在Python字符串中,可以混合使用正整数和负整数进行索引和切片
B.Python字符串采用[N:M]格式进行切片,获取字符串从索引N到M的子字符串(包含N和M)
C.字符串’C:\python.py’中第一个\表示转义符
D.空字符串可以表示为""或’’
【题目解析】
Python字符串采用[N:M]格式进行切片,获取字符串从索引N到M的子字符串(包含N,不包含M)。本题选B选项。
14、以下选项中不是Python文件读操作方法的是()。
A.read
B.readtext
C.readline
D.readlines
【题目解析】
Python中对文件的读操作有read、readline、readlines。所以本题选B。
15、以下关于语言类型的描述中,正确的是()。
A.静态语言采用解释方式执行,脚本语言采用编译方式执行
B.解释是将源代码一次性转换成目标代码同时逐条运行目标代码的过程
C.C语言是静态编译语言,Python语言是脚本语言
D.编译是将目标代码转换成源代码的过程
【题目解析】
高级语言根据计算机执行机制的不同可分为两类:静态语言和动态语言。静态语言采用编译方式执行,脚本语言采用解释方式执行。例如,C语言是静态语言,Python是脚本语言。编译是将源代码转换成目标代码的过程。解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程。本题选C选项。
16、以下选项中,Python语言中代码注释使用的符号是()。
A.!
B.//
C.#
D./… …/
【题目解析】
Python中的单行注释符号为#,多行注释为##。 所以本题选C。
17、以下关于函数的描述,错误的是()。
A.使用函数的目的只是为了增加代码复用。
B.函数是一种功能抽象
C.使用函数后,代码的维护难度降低了
D.函数名可以是任何有效的Python标识符
【题目解析】
函数是一种功能抽象,使用函数后,函数处修改则所有调用的函数处都被修改,所以大大的降低了代码的维护难度,函数名可以是任何有效的Python表示符。增加代码复用只是函数的一个优点之一。所以本题选A。
18、以下代码的输出结果是()。
def fun(ss, x = 2.0,y = 4.0):
ss += x * y
ss = 10
print(ss, fun(ss, 3))
A.22 None
B.10.0 22.0
C.10 None
D.22.0 None
【题目解析】
本题打印第一个ss值为10,第二个参数调用了函数,该函数没有返回值,得到None。所以本题选C。
19、以下代码的输出结果是()。
def demo( b = 2, a = 4):
global z
z += a * b
return z
z = 10
print(z, demo())
A.10 18
B.18 18
C.UnboundLocalError
D.18 None
【题目解析】
本题打印第一个z值为10,第二个参数调用了函数,该函数返回值是18,则本题输出的结果为10 18。所以本题选A。
20、以下关于分支和循环结构的描述中,错误的是()。
A.While循环只能用来实现无限循环
B.保留字break可以终止一个循环
C.所有的for分支都可以用while循环改写
D.continue可以停止后续代码的执行,从循环的开头重新执行
【题目解析】
Python中循环包括两种:遍历循环和无限循环。遍历循环使用保留字for依次提取遍历结构元素进行处理;无限循环使用保留字while根据判断条件执行程序。如果while中判断条件可以执行一次或两次,while中的语句块也就执行一次或两次,A项错误。循环结构有两个辅助循环控制保留字:break和continue。break用来跳出最内层for或while循环,脱离该循环后程序从循环后的代码继续执行;continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但跳不出当前循环。两者的区别是:continue语句只结束本次循环,不终止整个循环的执行,而break具备结束循环的能力。C、D两项正确。所有的for分支都可以用while循环改写,B项正确。本题选A选项。
21、以下关于函数优点的描述中,正确的是()。
A.函数可以表现程序的复杂度
B.函数可以使程序更加模块化
C.函数可以减少代码多次使用
D.函数便于书写
【题目解析】
函数定义:函数是指一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用其函数名即可。函数能提高应用的模块性和代码的重复利用率。本题选B选项。
22、Python中定义类的关键字是()。
A.def
B.class
C.function
D.defun
【题目解析】
在Python语言中,用关键字class来定义类。本题选B选项。
23、random库的seed(1)函数的作用是 ()。
A.生成一个随机数
B.生成一个k比特长度的随机整数
C.设置初始化随机数种子1
D.生成一个[0.0, 1.0)之间的随机小数
【题目解析】
在Python语言中,seed函数的作用是设置初始化随机种子,本题选C选项
24、以下关于Python函数的描述中,错误的是()。
A.Python程序的main函数可以改变为其他名称
B.如果Python程序包含一个函数main(),这个函数与其他函数地位相同
C.Python程序可以不包含main函数
D.Python程序需要包含一个主函数且只能包含一个主函数
【题目解析】
Python是一种脚本解释语言,与C/C++和Java有很大的区别,没有主函数的说法。当运行单个python文件时,如文件名为a.py,则a的属性name==‘main’,并不是首先执行所谓的main函数。Python整个程序自顶向下顺序执行。本题选D选项。
25、以下代码的输出结果是()。
n = 2
def multiply(x,y = 10):
global n
return x * y * n
s = multiply(10,2)
print(s)
A.400
B.1024
C.200
D.40
【题目解析】
本题考察的是函数的使用,x和y的值分别为10和2,则函数返回值为40。所以本题选D
26、当用户输入2时,下面代码的输出结果是()。
try:
n=input(“请输入一个整数:”)
def fun (n):
return n**5
fun(n)
except:
print(“程序执行错误”)
A.10
B.32
C.程序没有任何输出
D.程序执行错误
【题目解析】
input()函数从控制台获得用户的一行输入,无论用户输入什么内容,input()函数都以字符串类型返回结果。当用户输入2时,n=‘2’,这是字符2,不是数字2,不能进行数值运算,故程序会执行except后面的语句,输出程序执行错误。本题选D选项。
27、在Python语言中,不属于组合数据类型的是()。
A.复数类型
B.字典类型
C.列表类型
D.元组类型
【题目解析】
最常用的组合数据类型有大类,分别是集合类型、序列类型和映射类型。其中序列类型包括字符串类型、列表类型和元组类型,字典类型属于映射类型。本题选A选项。
28、以下代码的输出结果是()。
ls=list(range(4))
print(ls)
A.[0,1,2,3,4]
B.[0,1,2,3]
C.0,1,2,3,
D.0,1,2,3,4
【题目解析】
用中括号([0])表示列表类型,也可以通过list(x)函数将集合或字符串类型转换成列表类型。此代码生成列表ls=[0,1,2,3],最后通过print()函数输出。本题选B选项
29、元组变量t=(“cat”, “dog”, “tiger”, “human”), t[::-1]的结果是()。
A.('human', 'tiger', 'dog', 'cat')
B.{‘human’, ‘tiger’, ‘dog’, ‘cat’}
C.[‘human’, ‘tiger’, ‘dog’, ‘cat’]
D.运行出错
【题目解析】
元组属于序列类型,t[::-1]表示从右边往左边切片。所以本题选A。
30、关于Python文件的‘+’打开模式,以下选项正确的描述是()。
A.只读模式
B.追加写模式
C.与r/w/a/x一同使用,在原功能基础上增加同时读写功能
D.覆盖写模式
【题目解析】
r表示只读模式,a表示追加写模式,w表示覆盖写模式,+可以和r/w/a/x一同使用,表示在原功能基础上增加同时读写功能。所以本题选C。
31、以下代码运行的结果是()。
def split(s):
return s.split(“a”)
s = "Happy birthday to you!"
print(split(s))
A.运行出错
B.[‘Happy’, ‘birthday’, ‘to’, ‘you!’]
C.['H', 'ppy birthd', 'y to you!']
D.“Happy birthday to you!”
【题目解析】
本题考查字符串的split()函数,更具split()里面指定参数分隔字符串,本题是更具字符a去分隔该字符串s,所以本题选C。
32、以下代码的输出结果是()。
L1 =[‘abc’, [‘123’,‘456’]]
L2 = [‘1’,‘2’,‘3’]
print(L1 > L2)
A.TypeError: ‘>’ not supported between instances of ‘list’ and ‘str’
B.True
C.False
D.1
【题目解析】
本题考查的是两个列表的大小比较方法,列表比较大小可采用从左到右依次比较元素大小,若产生结果则不需继续比较。本题第一个元素是‘abc’和‘1’比较,字符串比较大小也是采用此方法,所以‘a’比‘1’字符大,则L1大于L2。所以本题答案选B。
33、以下程序输出正确的是()。
def func(num):
num *= 2
x = 20
func(x)
print(x)
A.出错
B.无输出
C.40
D.20
【题目解析】
本题考查的是函数的使用,该函数没有返回值,结果打印输出的是x则输出结果为20。所以本题选D。
34、文件demo.txt在当前代码所在目录内,其内容是一段文本:python is best language,以下代码的输出结果是()。
txt=open(“demo.txt”,“r”)
print(txt)
txt.close()
A.txt
B.demo.txt
C.非其他答案
D.python is best language
【题目解析】
open()函数打开一个文件,并返回可以操作这个文件的变量txt,并且open()函数有两个参数:文件名和打开模式。本题只是打开了文件,并没有对文件进行操作,因此不会输出文件的内容。print(txt)语句输出的是变量txt代表的文件的相关信息:<io.TextIOWrapper name=demo.txt’ mode=‘r’ encoding=‘cp936’>。若想要输出文件的内容,需要把文件的内容读入,如txt1=txt.read()。本题选C选项。
35、本题输出的结果正确的是()。
def func(a,*b):
for item in b:
a += item
return a
m = 0
print(func(m,1,1,2,3,5,7,12,21,33))
A.7
B.33
C.85
D.0
【题目解析】
本题考查的是函数和循环的使用, 调用该函数的时候形参a得到的值是0,b得到的值是1,1,2,3,5,7,12,21,33。函数内部的语句是进行循环依次取出a中的元素进行累加。最终结果为85。所以本题选C。
36、以下属于 Python 脚本程序转变为可执行程序的第三方库的是:()。
A.scrapy
B.numpy
C.pyinstaller
D.requests
【题目解析】
numpy是主要用作数据分析,scrapy和requests主要用于爬虫, pyinstaller主要用作打包程序。本题选C。
37、以下属于 Python 中文分词方向第三方库的是:()。
A.python-docx
B.pandas
C.beautifulsoup4
D.jieba
【题目解析】
jieba库的主要用于中文分词。所以本题选D。
38、在Python语言中,包含矩阵运算的第三方库是()。
A.numpy
B.PyQt5
C.wordcloud
D.wxPython
【题目解析】
numpy是Python的一种开源数值计算扩展第三方库,用于处理数据类型相同的多维数组,简称“数组”。numpy可以用来存储和处理大型矩阵,提供了许多高级的数组编程工具,如矩阵运算、矢量处理、N维数据变换等。本题选A选项。
39、在Python语言中,能够处理图像的第三方库是()。
A.pyinstaller
B.pyserial
C.pygame
D.PIL
【题目解析】
PIL库是Python语言在图像处理方面的重要的第三方库,支持图像存储、处理和显示,它能够处理几乎所有的图片格式,可以完成对图像的缩放、剪裁、叠加以及图像添加线条、图像和文字等操作。使用Python语言处理图像相关的程序,首选PIL库。本题选D选项。
40、在Python语言中,属于Web开发框架第三方库的是()。
A.Mayavi
B.Flask
C.PyQt5
D.time
【题目解析】
在Python语言中,属于Web开发框架第三方库的有:Django库、Pyramid库和Flask库。本题选B选项。
二、基本操作
import random # 导入random 库
brandlist = ['华为','苹果','诺基亚','OPPO','小米']
random.seed(0)
name = brandlist[random.randint(0,4)] # 在列表中随机取
print(name)
import jieba # 导入jieba库
s = input("请输入一个字符串")
n = len(s) # 计算中文字符数
m = len(jieba.lcut(s)) # 计算中文词语数
print("中文字符数为{},中文词语数为{}。".format(n, m))
n = eval(input("请输入数量:"))
if 0<n and n<=1: # if判断
cost = n*160
elif n<= 4:
cost = n*160*0.9
elif n<= 9:
cost = n*160*0.8
else:
cost = n*160*0.7
print("总额为:",cost)
三、简单应用
import turtle
turtle.pensize(2)
d = 4 # 设置边长
for i in range(4):
turtle.seth(d) # 方向
d += 90 # 增加角度
turtle.fd(200) # 画笔长度200
names=input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):")
t = names.split() # 按空格进行拆分
d = {}
for i in range(len(t)):
d[t[i]] = d.get(t[i],0)+1 # 写入字典
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in ls:
print("{}:{}".format(k[0],k[1]))
四、综合应用
问题1:
fr = open("sensor.txt","r",encoding="utf-8") # 以读的方式打开sensor.txt文件
fo = open("earpa001.txt","w") #以写的方式打开earpa001.txt文件准备写入
txt = fr.readlines() # 读取文件所有行
for line in txt:
ls = line.strip("\n").split(",") # 去除空格及以,进行拆分
if ls[1] == "earpa001": # 判断需要输出的字段
fo.write('{},{},{},{}\n'.format(ls[0],ls[1],ls[2],ls[3])) # 写入earpa001文件
fr.close()# 关闭
fo.close()
问题2:
f=open("earpa001.txt","r")
fo=open("earpa001_count.txt","w")
ls = f.readlines()
d = {}
for line in ls:
t=line.strip(' \n').split(',')
s=t[2]+'-'+t[3]
d[s]=d.get(s,0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=False) # 该语句用于排序
for i in range(len(ls)):
a,b=ls[i]
fo.write('{},{}\n'.format(a,b))
f.close()
fo.close()