全国计算机等级考试二级Python真题及解析.docx
《全国计算机等级考试二级Python真题及解析.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级Python真题及解析.docx(25页珍藏版)》请在冰豆网上搜索。
![全国计算机等级考试二级Python真题及解析.docx](https://file1.bdocx.com/fileroot1/2023-2/2/559edbfa-4e40-4437-9259-bab6eeac7fec/559edbfa-4e40-4437-9259-bab6eeac7fec1.gif)
全国计算机等级考试二级Python真题及解析
全国计算机等级考试二级Python真题及解析⑼
1.下面不属于软件工程的3个要素的是c
A过程
B方法
C环境
D工具
正确答案:
C
2.下面不属于软件设计原则的是c
A模块化
B自底向上
C信息隐蔽
D抽象
正确答案:
B
3.在关系数据库中,用來表示实体之间联系的是。
A网结构
B二维表
C线性表
D树结构
正确答案:
B
4.一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或
者多个共有的o
A属性
B元组
C记录
D行
正确答案:
A
5.有表示公司和职员及工作的三张表,职员可在多家公司兼职。
其中公司
c(公司号,公司名,地址,注册资本,法人代表,员工数),职员s(职员号,姓名,性别,年龄,学历),工作w(公司号,职员号,工资),则表w的键(码)为o
A公司号,职员号,工资
B职员号
C职员号,工资
D公司号,职员号
正确答案:
D
6.下列叙述中正确的是o
A栈是一种先进先出的线性表
B栈与队列都是非线性结构
C队列是一种后进先出的线性表
D栈与队列都是线性结构
正确答案:
D
7.下列叙述中正确的是o
A线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
B线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
C线性表的链式存储结构与顺序存储结构所需要的存储方式是相同的
D线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
正确答案:
B
&算法的有穷性是指O
A算法只能被有限的用户使用
B算法程序所处理的数据量是有限的
C算法程序的运行时间是有限的
D算法程序的长度是有限的
正确答案:
C
9.软件设计中划分模块的一个准则是o
A高内聚高耦合
B低内聚高耦合
C高内聚低耦合
D低内聚低耦合
正确答案:
C
10.耦合性和内聚性是对模块独立性度量的两个标准。
下面叙述中正确的是
A降低耦合性提高内聚性有利于提高模块的独立性
B耦合性是指一个模块内部个元素间彼此结合的紧密程度
C提高耦合性降低内聚性有利于提高模块的独立性
D内聚性是模块间相互连接的紧密程度
正确答案:
A
11.每个程序都具有的统一的运算模式是:
A顺序计算模式
B输入输出模式
C函数调用模式
DIPO模式
正确答案:
D
12.以下不是Python语言关键字的选项是:
ANone
Bas
Craise
Dftinction
正确答案:
D
13.以下关于同步赋值语句描述错误的选项是:
A同步赋值能够使得赋值过程变得更简洁
B判断多个单一赋值语句是否相关的方法是看其功能上是否相关或相同
C设x,y表示一个点的坐标,则x=a;y=b两条语句可以用x,y=a,b—条语句來赋值
D多个无关的单一赋值语句组合成同步赋值语句,会提高程序可读性正确答案:
D
14•以下代码的输出结果是:
print('{:
*A10.4}'.fomiat(,Fiower,))
AFlow
BFlowei
CFlow
D***Flow***
正确答案:
D
15.表达式
prmt(float(complex(10+5j).miag))
的结果是:
A10
B5
C10.0
D5.0
正确答案:
D
16.
表达式
print(M{:
.2f}M.fonnat(20-2**3+10/3**2*5))
的结果是:
A17.55
B67.56
C12.22
D17.56
正确答案:
D
17.如果p=ord('a'),表达式prmt(p,clu((p+3)%26十ord(X)))的结果是:
A97d
B97c
C97x
D97w
正确答案:
D
1&以下程序的输出结果是:
chs="pV-T1
for1inrange(6):
forchinchs[i]:
print(ch,end=H)
A
BM
C"I'-'l"
D|,,J|
正确答案:
D
19.以下关于随机运算函数库的描述,错误的是:
Arandom库里提供的不同类型的随机数函数是基于random.random()函数扩展的
B伪随机数是计算机按一定算法产生的,可预见的数,所以是“伪”随机数
CPython内置的landom库主要用于产生各种伪随机数序列
Dumform(a,b)产生一个a到b之间的随机整数
正确答案:
D
20.
以下关于分支和循环结构的描述,错误的是:
Apython的在分支和循环语句里使用例如x<=y<=z的表达式是合法的
B分支结构的中的代码块是用冒号來标记的
Cwhile循环如果设计不小心会出现死循环
D二分支结构的<表达式1>if<条件〉else<表达式2>形式,适合用來控制程序分支
正确答案:
D
21.
以下程序的输出结果是:
foilin“CHINA”:
forkmrange
(2):
pnnt(i,end=,M')ifi=N:
break
ACCHHIINNAA
BCCHHIIAA
CCCHHIAA
DCCHHIINAA
正确答案:
D
22.以下程序的输出结果是:
x=10
whilex:
x-=1
ifnotx%2:
pnnt(x,end='*)
else:
pnnt(x)
A86420
B975311
C97531
D864200
正确答案:
D
23.用户输入整数的时候不合规导致程序出错,为了不让程序异常中断,需要用到的语句是:
Aif语句
Beval语句
C循环语句
Dtiy-except语句
正确答案:
D
24.以下关于python内置函数的描述,错误的是:
AidO返回一个变量的一个编号,是其在内存中的地址
BallQs)返回True,如果Is的每个元素都是True
Ctype()返回一个对象的类型
DsortedQ对一个序列类型数据进行排序,将排序后的结果写回到该变量中
正确答案:
D
25.以下关于函数的描述,正确的是:
A函数的全局变量是列表类型的时候,函数内部不可以直接引用该全局变量
B如果函数内部定义了跟外部的全局变量同需的组合数据类型的变量,则函数内部引用的变量不确定
Cpython的函数里引用一个组合数据类型变量,就会创建一个该类型对象
D函数的简单数据类型全局变量在函数内部使用的时候,需要在显式声明
为全局变量
正确答案:
D
26.以下程序的输出结果是:
si=”QQ”
s2=”Wechat”
print(M{:
*<10}{:
=>10}formats1,s2))
A********QQWechat===
BQQWechat
C********qqWechat===
Dqq********===Wechat
正确答案:
D
27.关于以下程序输出的两个值的描述正确的是:
da=[1,2,3]
pimt(id(da))
defgetda(st):
fa=da.copy()
pnnt(id(fa))
getda(da)
A两个值相等
B每次执行的结果不确定
C首次不相等
D两个值不相等
正确答案:
D
28.以下不是组合数据类型的是:
A集合类型
B序列类型
C映射类型
D引用类型
正确答案:
D
29•以下关于组合类型的描述,错误的是:
A可以用大括号创建字典,用中括号增加新元素
B嵌套的字典数据类型可以用來表达高维数据
C字典的pop函数可以返回一个键对应的值,并删除该键值对
D空字典和空集合都可以用大括号來创建
正确答案:
D
30•以下程序的输出结果是:
x=『90丁87',90]
n=90
prmt(x.count(n))
A
1
B
2
C
None
D
0
正确答案:
D
31•以下程序的输出结果是:
diet={'Name1:
'baby1,'Age':
7}
prmt(dict.items())
A[('Agef,7),(Name,,'baby1)]
B(Age;7),(Name;'baby1)
C'Age"7,Name':
'baby1
Ddict_items([('Age,,7),(Name字baby?
])
正确答案:
D
32.以下程序的输出结果是:
dat=[T,2,3,O,0,0]
foritemindat:
ifitem=='O1:
da匚lemove(item)
prmt(dat)
A[T,2,3']
B[T,2,3,0、O]
C[T,2,3,0、O,•O']
D[T,2,O]
正确答案:
D
33.
以下程序的输出结果是:
L2=[[1,2,3,4],[5,6,7,8]]
L2.soit(reveise=Tme)
prmt(L2)
A[5,6,7,8],[1,2,3,4]
B[[8,7,6,5],[4,3,2,1]]
C[8,7,6,5],[4,3,2,1]
D[[5,6,7,8],[1,2,3,4]]
正确答案:
D
33.关于数据维度的描述,错误的是:
A—维数据采用线性方式组织,对应于数组概念
B二维数据有关联关系构成,釆用表格方式组织
C高维数据由键值对类型的数据组成,采用对象方式组织
D—维数据是由对等关系的有序数据构成,无序数据不是一维数据
正确答案:
D
35•以下程序的输出结果是:
fo=open(ntext.txtn/w+')
x,y=,tlusisatestVliello1
fo.wiiteC^}+{}\ir.fbniiat(x?
y))pimt(fb.readO)
fo.close()
Athisisatesthello
Bthisisatest
Cthisisatest,hello.
Dthisisatest+hello
正确答案:
D
36.文件dat.txt里的内容如下:
QQ&Wechat
Google&Baidu
以下程序的输出结果是:
fo=open(ntet.txtl7rl)
fo.seek
(2)
pimt(fb.read(8))
fo.close()
AWechat
B&WechatG
CWechatGo
D&Wechat
正确答案:
D
37.以下属于PythonHTML和XML解析的第三方库的是:
ADjango
BNetwoikx
CRequests
DBeautifiilSoup
正确答案:
D
38.以下属于Python打包源文件为可执行文件的第三方库的是:
APIL
BMatplotlib
CSklearn
DPyinstaller
正确答案:
D
39.以下属于PythonWeb开发框架第三方库的是:
AWeRoBot
BWheel
CPvgame
DDjango
正确答案:
D
40.以下关于Python内置库、标准库和第三方库的描述,正确的是:
A第三方库需要单独安装才能使用
B内置库里的函数不需要import就可以调用
C第三方库有三种安装方式,最常用的是pip工具
D标准库跟第三方库发布方法不一样,是跟python安装包一起发布的正确答案:
D
二、操作题
1.101
参照代码模板完善代码,实现下述功能。
从键盘输入一个整数和一个字符,以逗号隔开,在屏幕上显示输出一条信息。
示例如下:
输入
10,@
输出
@@@@@@@@@@10@@@@@@@@@@
输入输出示例
输入
输出
示例1
10,@
@@@@@@@
@@@10
@@@@@@@@@@
习题讲解
答案:
a,x=mput().split(T)#请输入1个整数和1个符号,逗号隔开
prmt(x*eval(a),a、x*eval(a))
要点:
1•输入两个值组成的字符串,要用split()分割开
2.同时赋值给两个变量
3.利用eval得到数值做运算,给字符做乘法,得到需要的格式
2.102
参照代码模板完善代码,实现下述功能。
从键盘输入一个由1和0组成的二进制字符串s,转换为八进制数输出显示在屏幕上,示例如下:
输入:
1100
输出:
转换成八进制数是:
14
输入输出示例
输入
输出
示例1
1100
14
习题讲解
答案:
s=lnputQ#请输入一个由1和0组成的二进制数字串
d=Owhiles:
d=d*2+(oid(s[0])-o[d('0'))
s=s[l:
]prmt(”转换成八进制数是:
{:
o}u.fbrmat(d))
要点:
1.pnnt和fomiat的格式用法,字符串的内置处理函数,切片
2.理解数据类型及其转换
3.103
参照代码模板完善代码,实现下述功能。
文件data.txt文件中有多行数据,打开文件,读取数据,并将其转化为列表。
统计读取的数据,计算每一行的总和、平均值,在屏幕上输出结果。
文件内容示例如下:
Chinese:
80,Math:
85,English:
92,Physical:
81,At匸85,Chemical〕88
屏幕输出结果示例如下:
总和是:
511.0,平均值是:
85.17
输入输出示例
输入输出
示例1从文件data.txt中读取总和是:
511.0,平均值
是:
85.17
习题讲解
答案:
fi=open(Hdata.txtf\f)
foi1infi:
1=l.split(',')
s=0.0
n=len(l)
forcoursm1:
items=couis.split(r,)
s+=eval(items[l])
pnnt("总和是:
{},平均值是:
{:
.2f}M.format(s,s/n))
fi.close()
4.201
参照代码模板完善代码,实现下述功能,不得修改其它代码。
使用turtle库的tunle.ciicleO函数和nutle.seth()函数绘制同心圆套圈,最小的圆圈半径为10像素,不同圆圈之间的半径差是40像素,效果如下图所示。
自动评阅说明
使用字符串形式输出—①―、_②—,—③—中应填代码即可以自动评阅得分
例如,如果代码为:
#代码模板|#你的代码mipoitturtle|lnipoi!
turtle
d=0|d=Ofbr1inrange(_1_):
|for1inrange(l):
turtle.fd(_2_)|tunle.fci(lOO)
turtle.—3—|turtle.fd(100+(i*3))
tuitle.seth(d)|turtle.seth(d)
则在提交代码页面输入:
printfr,'100','fd(100十(1*3))*)
提交后即可以査看得分
注:
如果有运算符,请在运算符两侧加上空格
习题讲解
答案:
#请在处填写一行代码#请不要修改其他代码
importturtle
r=10
dr=40
head=90foriinrange(4):
tiiitle.pendown()
tiutle.CHcle(i)
r-<-=dr
tuitle.penupO
turtle,seth(-head)
tuitle.fcl(di)
tuitle.seth(O)
turtle.done()
要点:
1.同心圆主要问题是要挪动画笔,用到pendown和penup
2.用循环來处理重画的个数
5.202
参照代码模板完善代码,实现下述功能。
从键盘输入一个中文字符串变量s,内部包含中文标点符号。
问题1:
(8分)用jieba分词,计算字符串s中的中文词汇个数,不包括
中文标点符号。
显示输出分词后的结果,用”/”分隔,以及中文词汇个数。
示例如下:
输入:
工业互联网”实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。
输出:
工业/互联网/实施/的/方式/是/通过/通信/控制/和/计算技术/的/交义/应
用/建造/一个/信息/物理/系统/促进/物理/系统/和/数字/系统/的/融合/
中文词语数是:
27
问题2:
(7分)在问题1的基础上,统计分词后的词汇出现的次数,用字
典结构保存。
显示输出每个词汇出现的次数,以及出现次数最多的词汇。
如果有多个词汇出现次数一样多,都要显示出來。
示例如下:
继续输出:
控制:
1
物理:
2
通信:
1
交叉:
1
互联网:
1
和【2
是
计算技术:
1
一个:
1
的「3
数字:
1
促进:
1
信息:
1
方式:
1
建造:
1
应用:
1
系统:
3
通过:
1
实施:
1
融合:
1
工业:
1
出现最多的词是(的系统):
3次
输入输出示例
输入输出
问题1
“工业互联网”实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。
中文词语数是:
27
问题2
控制:
1
物理:
2
通信:
1
交叉:
1
互联网:
1
和【2
是:
1
计算技术:
1一个11
的】3
数字:
1
促进:
1
信息:
1
方式】1
建造:
1
应用:
1系统:
3
通过:
1
实施:
1
融合:
1
工业】1
出现最多的词是
(的系统):
3次
习题讲解
答案:
#请在.….处填写多行表达式或语句#可以修改其他代码
importjieba
#s="工业互联网”实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。
•
S=inputc*请输入一个中文字符串,包含逗号和句号:
”)
s=s.replace(',',”).Teplace('。
;").ieplaceC、',").replace(““,”).ieplace(””,”)k=jieba.lcut(s)
dl={}
maxc=0
wo=nfbf1ink:
pnnt(i,end='7")
dl[i]=dl.get(i,O)十lprint(n\ii中文词语数是:
{}".format(len(k)))
foikeyind1:
ifmaxc
wo=key
maxc=d1[key]
elifmaxc=d1[key]:
wo+="+key
pnntC*{}:
{},'.fbmiat(key,d1[key]))
prmt(H出现最多的词是({}):
{}次n.fomiat(wo,maxc))
要点:
1.用jieba分词处理词汇统计
2.要处理掉输入的各种标点符号,用到replace()
3.用字典保存各个词出现次数
4•要遍历字典的键值对,找到最大的值,及其对应的键
6.301
一个人脸识别研究小组对若干名学生做了人脸识别的测试,将测试结果与被测试者的现场照片组合成文件名,写到了一个文件dir_100.txt中,每行是一个文件-名的信息,示例如下:
[*170902062T,'O']_116.jpg
「170902062ri_115.jpg
['1770603107,'1770603105',O,O]_1273.jpg
文件名各部分含义如下:
r识别出学号r,-识别出学号2\.../0表示检测到人脸但未识别出人,L照片的顺序编号jpg
测试过程中,一个学生可能被抓拍到多张照片中,所以会在多个文件名中被识别,学号出现在多个文件名中;一张照片中,可能有多个人脸,但有些分辨率不够而识别不出來,文件名位置用9,代替学号。
使用字典和列表型变量进行数据分析,最终获取实际参加测试的学生人数
和人均被测次数。
(1)读入dii_300.txt文件的内容,处理每一行文件名信息。
将文件名中的学号内容以列表形式保存,丢掉9,的字串;照片的顺序编号作为字典的关键字,学号列表作为字典的值。
转换后,显示字典中的每行信息,示例如下:
116:
1709020621
115:
1709020621
117:
1709020621
1273:
1770603107,1770603105
(2)将该字典中的学号提取出來,构造另一个字典,以学号作为字典的关键字,累计学号出现的次数,将累计值作为字典的值。
格式示例如下:
1709020621:
3
1770603107:
1
1770603105:
1
(3)累计字典中关键字的个数,即为实际参加测试的学生人数;累加每个关键字对应的值,即为所有学号测试次数;与实际测试人数之比,即为人均被测次数。
将实际参加测试人数和人均被测次数显示输出在屏幕上,示例如下:
实际参加测试的人数是:
1024
人均被测次数是:
2.7
输入输出示例
输入
输出
问题1
从文件dn_50.txt读
入
实际参加测试的人
数是:
1024
人均被测次数是:
2.7
自动评阅提示:
输出最终结果即可,中间结果不需要输出
习题讲解
答案:
#P301-l.py#请在.....处填写多行表达式或语句#可以修改其他代码
pied={}
numd={}
fi=open(udir_50.txt",'i')for1infi:
l=l.Teplace('\n',”).split('_')##pnnt(l[1])
ifl[O]!
=":
lkey,lvalue=l[l][:
-4],eval(l[0])
lval=[]
forvinlvalue:
ifv!
=O:
lval.append(v)
iflval:
lv=',ljoin(lval)
prmt(H{}:
{}u.fonnat(lkey,lv))
picd[lkev]=lv
fi.close()
idd={}forkeyinpied:
ids=pied[key].split(',')
fornuminids:
idd[num]=idd.get(num,O)+1
#pnnt(num,idd[num])
s=Oforkeyinidd:
s+=mt(idd[kev])
#pnntC,{}:
{}',.foimat(key,idd[key]))
count=len(idd)pnnt("^际参加测试的人数是:
”,coimt)pnnt(”人均被测次数是:
{:
.1f}H.fonnat(s/count))
要点:
1.这是一个实际问题,解决问题的方法有实际的推广意义。
问题的关键是要完成数据提取,然后才是分析统计
2.文件的读写,打开关闭是基础
3.读入文件要进行字符串的处理,按行,分割成列表
3.数据提取:
先取得文件里的有效内