全国计算机等级考试二级 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 行
1
正确答案: 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 算法程序的运行时间是有限的
2
D 算法程序的长度是有限的正确答案: C
9. 软件设计中划分模块的一个准则是 ___________。
A 高内聚高耦合 B 低内聚高耦合 C 高内聚低耦合
D 低内聚低耦合正确答案: C
10. 耦合性和内聚性是对模块独立性度量的两个标准。下面叙述中正确的是
A 降低耦合性提高内聚性有利于提高模块的独立性 B 耦合性是指一个模块内部个元素间彼此结合的紧密程度 C 提高耦合性降低内聚性有利于提高模块的独立性 D 内聚性是模块间相互连接的紧密程度 正确答案: A
11. 每个程序都具有的统一的运算模式是:
A 顺序计算模式 B 输入输出模式 C 函数调用模式 DIPO 模式
正确答案: D
12. 以下不是 Python 语言关键字的选项是:
A None B as C raise D function 正确答案: D
3
13.以下关于同步赋值语句描述错误的选项是:
A 同步赋值能够使得赋值过程变得更简洁
B 判断多个单一赋值语句是否相关的方法是看其功能上是否相关或相同 C 设 x, y 表示一个点的坐标,则 x=a;y=b 两条语句可以用 x,y = a,b 一条语句来赋值
D 多个无关的单一赋值语句组合成同步赋值语句,会提高程序可读性正确答案: D
14.以下代码的输出结果是:
print('{:*^10.4}'.format('Flower'))
A Flow B Flower C Flow D ***Flow*** 正确答案: D
15.表达式
print(float(complex(10+5j).imag))
的结果是:
A 10 B 5 C 10.0 D 5.0 正确答案: D
16.
表达式
print(\"{:.2f}\".format(20-2**3+10/3**2*5))
的结果是:
A 17.55 B 67.56 C 12.22
4
D 17.56
正确答案: D
17. 如果 p=ord(‘ a’ ), 表达式 print(p,chr((p+3)%26+ord('a'))) 的结果是:
A 97 d
B 97 c
C 97 x
D 97 w
正确答案: D
18. 以下程序的输出结果是:
chs = \"|'\\'-'|\"
for i in range(6):
for ch in chs[i]:
print(ch,end='')
A |'\\'-' B |\\-| C \"|'-'|\" D |''-'| 正确答案: D
19. 以下关于随机运算函数库的描述,错误的是:
A random 库里提供的不同类型的随机数函数是基于
random.random() 函数
扩展的
B 伪随机数是计算机按一定算法产生的,可预见的数,所以是“伪”随机
数
C Python 内置的 random 库主要用于产生各种伪随机数序列
D uniform(a,b) 产生一个 a 到 b 之间的随机整数
正确答案: D
5
20.
以下关于分支和循环结构的描述,错误的是:
A python 的在分支和循环语句里使用例如
x<=y<=z 的表达式是合法的
B 分支结构的中的代码块是用冒号来标记的 C while 循环如果设计不小心会出现死循环
D 二分支结构的 <表达式 1> if < 条件 > else <表达式 2> 形式,适合用来控制
程序分支
正确答案: D
21.
以下程序的输出结果是:
for i in \"CHINA\":
for k in range(2):
print(i, end=\"\")
if i == 'N':
break
A CCHHIINNAA B CCHHIIAA C CCHHIAA D CCHHIINAA 正确答案: D
22.以下程序的输出结果是:
x= 10
while x:
x -= 1
if not x%2:
print(x,end = '')
6
else:
print(x)
A 86420 B 975311 C 97531 D 864200 正确答案: D
23. 用户输入整数的时候不合规导致程序出错,为了不让程序异常中断,需要用到的语句是:
A if 语句
B eval 语句 C 循环语句 D try-except 语句正确答案: D
24. 以下关于 python 内置函数的描述,错误的是:
A id() 返回一个变量的一个编号,是其在内存中的地址
B all(ls) 返回 True,如果 ls 的每个元素都是
True
C type() 返回一个对象的类型
D sorted() 对一个序列类型数据进行排序,将排序后的结果写回到该变量中正确答案: D
25. 以下关于函数的描述,正确的是:
A 函数的全局变量是列表类型的时候,函数内部不可以直接引用该全局变
量
B 如果函数内部定义了跟外部的全局变量同名的组合数据类型的变量,则
函数内部引用的变量不确定
C python 的函数里引用一个组合数据类型变量,就会创建一个该类型对象 D 函数的简单数据类型全局变量在函数内部使用的时候,需要在显式声明为全局变量
7
正确答案: D
26. 以下程序的输出结果是:
s1 =\"QQ\"
s2 =\"Wechat\"
print(\"{:*<10}{:=>10}\".format(s1,s2))
A********QQWechat====
B QQWechat
C ********QQ Wechat==== D QQ********====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 映射类型
8
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
0
正确答案: 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'
D dict_items([('Age', 7), ('Name', 'baby')])
9
正确答案: 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
33.
以下程序的输出结果是:
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 一维数据采用线性方式组织,对应于数组概念
B 二维数据有关联关系构成,采用表格方式组织
10
C 高维数据由键值对类型的数据组成,采用对象方式组织 D 一维数据是由对等关系的有序数据构成,无序数据不是一维数据正确答案: D
35.以下程序的输出结果是:
fo = open(\"text.txt\
x,y ='this is a test','hello'
fo.write('{}+{}\\n'.format(x,y))
print(fo.read())
fo.close()
A this is a test hello
B this is a test
C this is a test,hello.
D this is a test+hello
正确答案: D
36. 文件 dat.txt 里的内容如下:QQ&Wechat
Google & Baidu
以下程序的输出结果是:
fo = open(\"tet.txt\
fo.seek(2)
print(fo.read(8))
fo.close()
A Wechat B &Wechat G C Wechat Go
11
D &Wechat
正确答案: D
37. 以下属于 Python HTML 和 XML 解析的第三方库的是:
A Django B Networkx C Requests D Beautiful Soup 正确答案: D
38. 以下属于 Python 打包源文件为可执行文件的第三方库的是:
A PIL B Matplotlib C Sklearn D Pyinstaller 正确答案: D
39. 以下属于 Python Web 开发框架第三方库的是:
A WeRoBot B Wheel C Pygame D Django 正确答案: D
40. 以下关于 Python 内置库、标准库和第三方库的描述,正确的是:
A 第三方库需要单独安装才能使用
B 内置库里的函数不需要 import 就可以调用 C 第三方库有三种安装方式,最常用的是 pip 工具
D 标准库跟第三方库发布方法不一样,是跟 python 安装包一起发布的正确答案: D
二、操作题
12
1.101
参照代码模板完善代码,实现下述功能。从键盘输入一个整数和一个字
符,以逗号隔开,在屏幕上显示输出一条信息。
示例如下:
输入
10,@
输出
@@@@@@@@@@ 10 @@@@@@@@@@
输入输出示例
输入
输出
@@@@@@@
@@@ 10
示例 1
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
13
输出:
转换成八进制数是: 14
输入输出示例
输入
输出 14
示例 1
1100
习题讲解
答案:
s = input() # 请输入一个由 1 和 0 组成的二进制数字串
d = 0while s:
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
输入输出示例
输入
输出
14
示例 1
从文件 data.txt 中读取 总和是: 511.0,平均值
是: 85.17
习题讲解
答案:
fi = open(\"data.txt\
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 像素,效果如下图所示。
---------------------------------------------------------------
自动评阅说明
15
使用字符串形式输出 ____①____,____②____,____③ ____中应填代码即可
以自动评阅得分
例如,如果代码为:
# 代码模板
| # 你的代码 import turtle
| d = 0for i in range(__1__): |
turtle.fd(100)
| import turtle
for i in range(1):
d = 0
turtle.fd(__2__) | 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
16
2. 用循环来处理重画的个数
5.202
参照代码模板完善代码,实现下述功能。从键盘输入一个中文字符串变量s,内部包含中文标点符号。
问题 1:( 8 分)用 jieba 分词,计算字符串 s 中的中文词汇个数,不包括中文标点符号。显示输出分词后的结果,用 ”/ 分”隔,以及中文词汇个数。示例如下:
输入:
工业互联网 ”实施的方式是通过通信、控制和计算技术的交叉应用,建造一个信息物理系统,促进物理系统和数字系统的融合。
输出:
工业 / 互联网 /实施 / 的/ 方式 /是/ 通过 / 通信 /控制 / 和 / 计算技术 /的/ 交叉 / 应
用 /建造 / 一个 / 信息 /物理 / 系统 / 促进 /物理 / 系统 / 和/数字 / 系统 / 的/融
合 / 中文词语数是: 27
问题 2:( 7 分)在问题 1 的基础上,统计分词后的词汇出现的次数,用字典结构保存。显示输出每个词汇出现的次数,以及出现次数最多的词汇。如果有多个词汇出现次数一样多,都要显示出来。示例如下:
继续输出:
控制 : 1
物理 : 2
通信 : 1
交叉 : 1
互联网 : 1
和 : 2
是 : 1
计算技术 : 1
一个 : 1
17
的 : 3
数字 : 1
促进 : 1
信息 : 1
方式 : 1
建造 : 1
应用 : 1
系统 : 3
通过 : 1
实施 : 1
融合 : 1
工业 : 1
出现最多的词是(的 系统): 3 次
输入输出示例
输入
输出
中文词语数是: 27
问题 1
“工业互联网 ”实施
的方式是通过通信、控
制和计算技术的交叉应
用,建造一个信息物理
系统,促进物理系统和
数字系统的融合。
问题 2
控制 : 1
物理 : 2 通信 : 1
交叉 : 1
互联网 : 1
和: 2
18
是: 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:
19
','')
”
print(i, end= \"/ \")
d1[i] = d1.get(i,0) + 1print(\"\\n 中文词语数是: {}\".format(len(k)))
for key in d1:
if maxc < d1[key]:
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代’替学号。
使用字典和列表型变量进行数据分析,最终获取实际参加测试的学生人数
和人均被测次数。
20
]照
(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
人均被测次数是:
2.7
自动评阅提示:输出最终结果即可,中间结果不需要输出
习题讲解
答案:
#P301-1.py#请在 .....处填写多行表达式或语句 #可以修改其他代码
21
picd = {}
numd = {}
fi = open(\"dir_50.txt\
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(\" 实际参加测试的人数是: \人均被测次数
是: {:.1f}\".format(s/count))
要点:
1. 这是一个实际问题,解决问题的方法有实际的推广意义。问题的关键是要完成数据提取,然后才是分析统计
2. 文件的读写,打开关闭是基础
3. 读入文件要进行字符串的处理,按行,分割成列表
22
3. 数据提取:先取得文件里的有效内容,转换成列表,利用列表的切片,提取出照片编号和学号,放到字典 picd 里
4. 第二步数据分析,需要先从字典里把学号提取出来,为了便于统计每个学号被测的次数,再建一个字典 idd
5. idd 字典的键是学号,所以字典的
len 就是参加测试的人数
6. 为了计算平均测试次数,需要累计每个学号被测的次数,最后除以参加测试人数就得到结果
23
因篇幅问题不能全部显示,请点此查看更多更全内容