全国计算机等级考试二级Python真题及解析

全国计算机等级考试二级Python真题及解析( 9)

1.下面不属于软件工程的 3 个要素的是 ___________。

A过程

B方法

C环境

D工具

正确答案: C

2.下面不属于软件设计原则的是 ___________。

A模块化

B自底向上

C信息隐蔽

D抽象

正确答案: B

3.在关系数据库中,用来表示实体之间联系的是 ___________。

A网结构

B二维表

C线性表

D树结构

正确答案: B

4.一般情况下,当对关系 R 和 S 进行自然连接时,要求 R 和 S 含有一个或者多个共有的 ___________。

A属性

B元组

C记录

D行

正确答案: A

5.有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司

c(公司号,公司名,地址,注册资本,法人代表,员工数),职员s(职员号,姓名,性别,年龄,学历),工作w(公司号,职员号,工资),则表w 的键(码)为 ___________。

A公司号,职员号,工资

B职员号

C职员号,工资

D公司号,职员号

正确答案: D

6. 下列叙述中正确的是 ___________。

A栈是一种先进先出的线性表

B栈与队列都是非线性结构

C队列是一种后进先出的线性表

D栈与队列都是线性结构

正确答案: D

7. 下列叙述中正确的是 ___________。

A线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

B线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C线性表的链式存储结构与顺序存储结构所需要的存储方式是相同的

D线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

正确答案: B

8. 算法的有穷性是指 ___________。

A算法只能被有限的用户使用

B算法程序所处理的数据量是有限的

C算法程序的运行时间是有限的

D算法程序的长度是有限的

正确答案: C

9.软件设计中划分模块的一个准则是 ___________。

A高内聚高耦合

B低内聚高耦合

C高内聚低耦合

D低内聚低耦合

正确答案: C

10.耦合性和内聚性是对模块独立性度量的两个标准。下面叙述中正确的是A降低耦合性提高内聚性有利于提高模块的独立性

B耦合性是指一个模块内部个元素间彼此结合的紧密程度

C提高耦合性降低内聚性有利于提高模块的独立性

D内聚性是模块间相互连接的紧密程度

正确答案: A

11.每个程序都具有的统一的运算模式是:

A顺序计算模式

B输入输出模式

C函数调用模式

DIPO 模式

正确答案: D

12.以下不是 Python 语言关键字的选项是:

ANone

Craise

Dfunction

正确答案: D

13.以下关于同步赋值语句描述错误的选项是:

A同步赋值能够使得赋值过程变得更简洁

B判断多个单一赋值语句是否相关的方法是看其功能上是否相关或相同

C设 x, y 表示一个点的坐标,则 x=a;y=b 两条语句可以用 x,y = a,b 一条语句来赋值

D多个无关的单一赋值语句组合成同步赋值语句,会提高程序可读性

正确答案: D

14.以下代码的输出结果是:

print('{:*^10.4}'.format('Flower'))

AFlow

BFlower

CFlow

D***Flow***

正确答案: D

15.表达式

print(float(complex(10+5j).imag))

的结果是:

B5

C10.0

D5.0

正确答案: D

表达式

print("{:.2f}".format(20-2**3+10/3**2*5))

的结果是:

A17.55

B67.56

C12.22

D17.56

正确答案: D

17. 如果 p=ord(‘ a’ ),表达式 print(p,chr((p+3)%26+ord('a'))) 的结果是:

A97 d

B97 c

C97 x

D97 w

正确答案: D

18.以下程序的输出结果是:

chs = "|'\'-'|"

for i in range(6):

for ch in chs[i]:

print(ch,end='')

A|'\'-'

B|\-|

C"|'-'|"

D|''-'|

正确答案: D

19.以下关于随机运算函数库的描述,错误的是:

Arandom 库里提供的不同类型的随机数函数是基于random.random() 函数扩展的

B伪随机数是计算机按一定算法产生的,可预见的数,所以是“伪”随机

CPython 内置的 random 库主要用于产生各种伪随机数序列

Duniform(a,b) 产生一个 a 到 b 之间的随机整数

正确答案: D

以下关于分支和循环结构的描述,错误的是:

Apython 的在分支和循环语句里使用例如x

B分支结构的中的代码块是用冒号来标记的

Cwhile 循环如果设计不小心会出现死循环

D二分支结构的if else形式,适合用来控制程序分支

正确答案: D

以下程序的输出结果是:

for i in "CHINA":

for k in range(2):

print(i, end="")

if i == 'N':

break

ACCHHIINNAA

BCCHHIIAA

CCCHHIAA

DCCHHIINAA

正确答案: D

22.以下程序的输出结果是:

x= 10

while x:

x-= 1

if not x%2:

print(x,end = '')

print(x)

A86420

B975311

C97531

D864200

正确答案: D

23.用户输入整数的时候不合规导致程序出错,为了不让程序异常中断,需要用到的语句是:

Aif 语句

Beval 语句

C循环语句

Dtry-except 语

句正确答案: D

24.以下关于 python 内置函数的描述,错误的是:

Aid() 返回一个变量的一个编号,是其在内存中的地址

Ball(ls) 返回 True,如果 ls 的每个元素都是True

Ctype() 返回一个对象的类型

Dsorted() 对一个序列类型数据进行排序,将排序后的结果写回到该变量

中正确答案: D

25.以下关于函数的描述,正确的是:

A函数的全局变量是列表类型的时候,函数内部不可以直接引用该全局变量

B如果函数内部定义了跟外部的全局变量同名的组合数据类型的变量,则函数内部引用的变量不确定

Cpython 的函数里引用一个组合数据类型变量,就会创建一个该类型对象

D函数的简单数据类型全局变量在函数内部使用的时候,需要在显式声明为全局变量

正确答案: D

26.以下程序的输出结果是:

s1 ="QQ"

s2 ="Wechat"

print("{:*10}".format(s1,s2))

A********QQWechat====

BQQWechat

DQQ********====Wechat

正确答案: D

27.关于以下程序输出的两个值的描述正确的是:da = [1,2,3]

print(id(da))

def getda(st):

fa = da.copy()

print(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

print(x.count(n))

A

1

B

2

C

None

D

正确答案: D

31.以下程序的输出结果是:

dict = {'Name': 'baby', 'Age': 7}

print(dict.items())

A[('Age', 7), ('Name', 'baby')]

B('Age', 7), ('Name', 'baby')

C'Age':7, 'Name': 'baby'

Ddict_items([('Age', 7), ('Name', 'baby')])

正确答案: D

32.以下程序的输出结果是:

dat=['1', '2', '3', '0', '0', '0']

for item in dat:

if item == '0':

dat.remove(item)

print(dat)

A['1', '2', '3']

B['1', '2', '3', '0', '0']

C['1', '2', '3', '0', '0', '0']

D['1', '2', '3', '0']

正确答案: D

以下程序的输出结果是:

L2 = [[1,2,3,4],[5,6,7,8]]

L2.sort(reverse = True)

print( 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

34.关于数据维度的描述,错误的是:

A一维数据采用线性方式组织,对应于数组概念

C高维数据由键值对类型的数据组成,采用对象方式组织

D一维数据是由对等关系的有序数据构成,无序数据不是一维数据正确答案: D

35.以下程序的输出结果是:

fo = open("text.txt",'w+')

x,y ='this is a test','hello'

fo.write('{}+{}\n'.format(x,y))

print(fo.read())

fo.close()

Athis is a test hello

Bthis is a test

Cthis is a test,hello.

Dthis is a test+hello

正确答案: D

36.文件 dat.txt 里的内容如下:

QQWechat

Google Baidu

以下程序的输出结果是:

fo = open("tet.txt",'r')

fo.seek(2)

print(fo.read(8))

fo.close()

AWechat

BWechat G

CWechat Go

DWechat

正确答案: D

37.以下属于 Python HTML 和 XML 解析的第三方库的是:

ADjango

BNetworkx

CRequests

DBeautiful Soup

正确答案: D

38.以下属于 Python 打包源文件为可执行文件的第三方库的是:

APIL

BMatplotlib

CSklearn

DPyinstaller

正确答案: D

39.以下属于 Python Web 开发框架第三方库的是:

AWeRoBot

BWheel

CPygame

DDjango

正确答案: D

40.以下关于 Python 内置库、标准库和第三方库的描述,正确的是:

A第三方库需要单独安装才能使用

B内置库里的函数不需要 import 就可以调用

C第三方库有三种安装方式,最常用的是 pip 工具

D标准库跟第三方库发布方法不一样,是跟 python 安装包一起发布的正确答案: D

二、操作题

1.101

参照代码模板完善代码,实现下述功能。从键盘输入一个整数和一个字

符,以逗号隔开,在屏幕上显示输出一条信息。

示例如下:

输入

10,@

输出

@@@@@@@@@@ 10 @@@@@@@@@@

输入输出示例

输入输出

示例 110,@@@@@@@@

@@@ 10

@@@@@@@@@@

习题讲解

答案 :

a,x = input().split(',') # 请输入 1 个整数和 1 个符号,逗号隔开

print(x*eval(a),a,x*eval(a))

要点:

1.输入两个值组成的字符串,要用 split()分割开

2.同时赋值给两个变量

3.利用 eval 得到数值做运算,给字符做乘法,得到需要的格式

2.102

参照代码模板完善代码,实现下述功能。从键盘输入一个由 1 和 0 组成的二进制字符串 s,转换为八进制数输出显示在屏幕上,示例如下:

输入:

1100

输出:

转换成八进制数是: 14

输入输出示例

输入输出

示例 1110014

习题讲解

答案:

s= input() # 请输入一个由 1 和 0 组成的二进制数字串

d= 0whil

d= d*2 + (ord(s[0]) -ord('0'))

s= s[1:]print(" 转换成八进制数是: {:o}".format(d))

要点:

1.print 和 format 的格式用法,字符串的内置处理函数,切片

2.理解数据类型及其转换

3.103

参照代码模板完善代码,实现下述功能。文件data.txt 文件中有多行数据,打开文件,读取数据,并将其转化为列表。统计读取的数据,计算每一行的总和、平均值,在屏幕上输出结果。

文件内容示例如下:

Chinese: 80,Math:85,English:92, Physical: 81,Art:85,Chemical:88

屏幕输出结果示例如下:

总和是: 511.0,平均值是: 85.17

输入输出示例

输入输出

示例 1从文件data.txt中读取总和是:511.0,平均值

是: 85.17

习题讲解

答案:

fi = open("data.txt", 'r')

for l in fi:

l= l.split(',')

s= 0.0

n= len(l)

for cours in l:

items = cours.split(':')

s+= eval(items[1])

print(" 总和是: {} ,平均值是: {:.2f}".format(s,s/n))

fi.close()

4.201

参照代码模板完善代码,实现下述功能,不得修改其它代码。使用turtle 库的 turtle.circle() 函数和 turtle.seth() 函数绘制同心圆套圈,最小的圆圈半径为10 像素,不同圆圈之间的半径差是40 像素,效果如下图所示。

自动评阅说明

使用字符串形式输出____①____,____②____,____③ ____中应填代码即可以自动评阅得分

例如,如果代码为:

#代码模板| # 你的代码 import turtle|import turtle

d= 0| d = 0for i in range(__1__): |for i in range(1):

turtle.fd(__2__) |turtle.fd(100)

turtle.__3__|turtle.fd(100 + (i * 3))

turtle.seth(d)|turtle.seth(d)

则在提交代码页面输入:

print('1', '100', 'fd(100 + (i * 3))')

提交后即可以查看得分

注:如果有运算符,请在运算符两侧加上空格

习题讲解

答案:

#请在 ______处填写一行代码 # 请不要修改其他代码

import turtle

r= 10

dr = 40

head = 90for i in range (4):

turtle.pendown()

turtle.circle(r)

r+= dr

turtle.penup()

turtle.seth(-head)

turtle.fd(dr)

turtle.seth(0)

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

一个 : 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

一个 : 1

的: 3

数字 : 1

促进 : 1

信息 : 1

方式 : 1

建造 : 1

应用 : 1

系统 : 3

通过 : 1

实施 : 1

融合 : 1

工业 : 1

出现最多的词是

(的系统): 3 次习题讲解

答案:

#请在 .....处填写多行表达式或语句#可以修改其他代码

import jieba

#s = ' 工“业互联网”实施的方式是通过通信、控制和计算技术的交叉应

用,建造一个信息物理系统,促进物理系统和数字系统的融合。 '

s= input("请输入一个中文字符串,包含逗号和句号:")

s= s.replace(',','').replace('。','').replace('、 ','').replace('“ ','').replace('” ','') k=jieba.lcut(s)

d1 = {}

maxc = 0

wo = ''for i in k:

print(i, end= "/ ")

d1[i] = d1.get(i,0) + 1print("\n 中文词语数是: {}".format(len(k)))

for key in d1:

if maxc

wo = key

maxc = d1[key]

elif maxc == d1[key]:

wo += ' ' + key

print("{}: {}".format(key,d1[key]))

print(" 出现最多的词是( {} ): {} 次 ".format(wo, maxc))

要点:

1.用 jieba 分词处理词汇统计

2.要处理掉输入的各种标点符号,用到 replace()

3.用字典保存各个词出现次数

4.要遍历字典的键值对,找到最大的值,及其对应的键

6.301

一个人脸识别研究小组对若干名学生做了人脸识别的测试,将测试结果与

被测试者的现场照片组合成文件名,写到了一个文件dir_100.txt 中,每行是一

个文件名的信息,示例如下:

['1709020621', '0']_116.jpg

['1709020621']_115.jpg

['1770603107', '1770603105', '0', '0']_1273.jpg

文件名各部分含义如下:

[‘识别出学号 1’,‘识别出学号 2’ , ,表‘0示检测到人脸但未识别出人’ ]照片的顺序编号 .jpg

测试过程中,一个学生可能被抓拍到多张照片中,所以会在多个文件名中

被识别,学号出现在多个文件名中;一张照片中,可能有多个人脸,但有些分

辨率不够而识别不出来,文件名位置用‘0代’替学号。

使用字典和列表型变量进行数据分析,最终获取实际参加测试的学生人数

和人均被测次数。

(1)读入 dir_300.txt 文件的内容,处理每一行文件名信息。将文件名中的学号内容以列表形式保存,丢掉‘0的’字串;照片的顺序编号作为字典的关键字,学号列表作为字典的值。转换后,显示字典中的每行信息,示例如下:116:1709020621

115:1709020621

117:1709020621

1273: 1770603107,1770603105

(2)将该字典中的学号提取出来,构造另一个字典,以学号作为字典的关键字,累计学号出现的次数,将累计值作为字典的值。格式示例如下:1709020621:3

1770603107:1

1770603105:1

(3)累计字典中关键字的个数,即为实际参加测试的学生人数;累加每个关键字对应的值,即为所有学号测试次数;与实际测试人数之比,即为人均被

测次数。将实际参加测试人数和人均被测次数显示输出在屏幕上,示例如下:实际参加测试的人数是:1024

人均被测次数是: 2.7

输入输出示例

输入输出问题 1从文件dir_50.txt读实际参加测试的人

入数是: 1024

人均被测次数是:

自动评阅提示:输出最终结果即可,中间结果不需要输出

习题讲解

答案:

#P301-1.py#请在 .....处填写多行表达式或语句#可以修改其他代码

picd = {}

numd = {}

fi = open("dir_50.txt",'r')for l in fi:

l=l.replace('\n','').split('_')##print(l[1])

if l[0] != '' :

lkey,lvalue = l[1][:-4],eval(l[0])

lval = []

for v in lvalue:

if v != '0':

lval.append(v)

if lval:

lv= ','.join(lval)

print("{}:{}".format( lkey,lv))

picd[lkey] = lv

fi.close()

idd = {}for key in picd:

ids = picd[key].split(',')

for num in ids:

idd[num] = idd.get(num,0) +1

#print(num,idd[num])

s= 0for key in idd:

s+= int(idd[key])

#print("{}:{}".format(key, idd[key]))

count = len(idd)print(" 实际参加测试的人数是:",count)print(" 人均被测次数是: {:.1f}".format(s/count))

要点:

1.这是一个实际问题,解决问题的方法有实际的推广意义。问题的关键是

要完成数据提取,然后才是分析统计

2.文件的读写,打开关闭是基础

3.读入文件要进行字符串的处理,按行,分割成列表

3.数据提取:先取得文件里的有效内容,转换成列表,利用列表的切片,提取出照片编号和学号,放到字典 picd 里

4.第二步数据分析,需要先从字典里把学号提取出来,为了便于统计每个学号被测的次数,再建一个字典 idd

5. idd 字典的键是学号,所以字典的len 就是参加测试的人数

6.为了计算平均测试次数,需要累计每个学号被测的次数,最后除以参加测试人数就得到结果

你可能感兴趣的:(python,数据结构,开发语言)