admin 管理员组

文章数量: 887029


2024年1月11日发(作者:个人简历模板下载免费word)

全国计算机等级考试二级

Python 真题及解析( 12)

一、选择题

1. 以下关于程序设计语言的描述,错误的选项是:

A Python 语言是一种脚本编程语言

B 汇编语言是直接操作计算机硬件的编程语言

C 程序设计语言经历了机器语言、汇编语言、脚本语言三个阶段

D 编译和解释的区别是一次性翻译程序还是每次执行时都要翻译程序正确答案: C

2.表达式 1001 == 0x3e7 的结果是:

A false

B False

C true

D True

正确答案: B

3. 以下选项,不是 Python 保留字的选项是:

A del

B pass

C not

D string

正确答案: D

4. 表达式 eval('500/10') 的结果是:

A ‘ 500/10 ’

B 500/10

C 50

D 50.0

正确答案: D

1

5. 15. 表达式 type(eval('45')) 的结果是:

A

B

C None

D

正确答案: D

6. 表达式 divmod(20,3) 的结果是:

A 6, 2

B 6

C 2

D (6, 2)

正确答案: D

7. 以下关于字符串类型的操作的描述,错误的是:

A e(x,y)方法把字符串 str 中所有的 x 子串都替换成 y

B 想把一个字符串 str 所有的字符都大写,用

()

C 想获取字符串 str 的长度,用字符串处理函数

()

D 设 x =

’ aa,’则执行 x*3 的结果是 ‘ aaaaaa’

正确答案: C

8. 设 str = 'python',想把字符串的第一个字母大写,其他字母还是小写,正确的选项是:

A print(str[0].upper()+str[1:])

B print(str[1].upper()+str[-1:1])

C print(str[0].upper()+str[1:-1])

D print(str[1].upper()+str[2:])

正确答案: A

9. 以下选项,不属于程序流程图基本元素的是:

A 循环框

B 连接点

2

C 判断框

D 起始框

正确答案: A

10. 以下关于循环结构的描述,错误的是:

A 遍历循环使用 for <循环变量 > in <循环结构 >语句,其中循环结构不能是

文件

B 使用 range()函数可以指定 for 循环的次数

C for i in range(5)表示循环 5 次, i 的值是从 0 到 4

D 用字符串做循环结构的时候,循环的次数是字符串的长度正确答案: A

11. 执行以下程序,输入 ” 93python22,”输出结果是:

w = input( 请‘输入数字和字母构成的字符串:

’)

for x in w:

if '0'<= x <= '9':

continue

else:

e(x,'')

print(w)

A python9322

B python

C 93python22

D 9322

正确答案: C

12.执行以下程序,输入

la,输出结果是:

la = 'python'

try:

s = eval(input('请输入整数: '))

ls = s*2

print(ls)

3

except:

print('请输入整数 ')

A la

B 请输入整数

C pythonpython

D python

正确答案: C

13. 执行以下程序,输入 qp,输出结果是:

k = 0

while True:

s = input('请输入 q 退出: ')

if s == 'q':

k += 1

continue

else:

k += 2

break

print(k)

A 2

B 请输入 q 退出:

C 3

D 1

正确答案: A

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

s = 0

def fun(num):

try:

s += num

return s

except:

return 0

4

return 5

print(fun(2))

A 0

B 2

C UnboundLocalError

D 5

正确答案: A

15. 以下关于函数的描述,错误的是:

A 函数是一种功能抽象

B 使用函数的目的只是为了增加代码复用

C 函数名可以是任何有效的 Python 标识符

D 使用函数后,代码的维护难度降低了正确答案: B

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

def test( b = 2, a = 4):

global z

z += a * b

return z

z = 10

print(z, test())

A 18 None

B 10 18

C UnboundLocalError

D 18 18

正确答案: B

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

def hub(ss, x = 2.0,y = 4.0):

ss += x *

y ss = 10

5

print(ss, hub(ss, 3))

A 22.0 None

B 10 None

C 22 None

D 10.0 22.0

正确答案: B

18. 以下表达式,正确定义了一个集合数据对象的是:

Ax = { 200,

Bx = ( 200,

’ flg ’ , 20.3}

’ flg ’ , 20.3)

’ flg ’ , 20.3 ]

Cx = [ 200,

Dx = { ‘ flg ’ : 20.3}

正确答案: A

19.

以下程序的输出结果是:

ss = list(set("jzzszyj"))

()

print(ss) A['z',

'j', 's', 'y'] B['j',

's', 'y', 'z']

C['j', 'z', 'z', 's', 'z', 'y', 'j']

D['j', 'j', 's', 'y', 'z', 'z', 'z']

正确答案: B

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

ss = set("htslbht")

sorted(ss)

for i in ss:

print(i,end = '')

A

htslbht

B

hlbst

6

C

tsblh

D

hhlstt

正确答案: B

21.已知 id(ls1) = 4404896968,以下程序的输出结果是:

ls1 = [1,2,3,4,5]

ls2 = ls1

ls3 = ()

print(id(ls2),id(ls3))

A4404896968 4404896904

B4404896904 4404896968

C4404896968 4404896968

D4404896904 4404896904

正确答案: A

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

ls =list({'shandong':200, 'hebei':300, 'beijing':400})

print(ls)

A['300','200','400']

B['shandong', 'hebei', 'beijing']

C[300,200,400]

D'shandong', 'hebei', 'beijing'

正确答案: B

23. 以下关于文件的描述,错误的是:

A 二进制文件和文本文件的操作步骤都是

“打开 -操作 -关闭 ”

B open() 打开文件之后,文件的内容并没有在内存中

C open()只能打开一个已经存在的文件

D 文件读写之后,要调用 close()才能确保文件被保存在磁盘中了正确答案: C

7

24.以下程序输出到文件

里的结果是:

fo = open("",'w')

x = [90,87,93]

z = []

for y in x:

(str(y))

(",".join(z))

()

A [90,87,93]

B 90,87,93

C ‘ [90,87,93] ’

D ‘ 90,87,93 ’

正确答案: B

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

img1 = [12,34,56,78]

img2 = [1,2,3,4,5]

def displ():

print(img1)

def modi():

img1 = img2

modi()

displ()

A( [1,2,3,4,5])

B[12, 34, 56, 78]

C([12, 34, 56, 78])

D[1,2,3,4,5]

正确答案: B

26. 以下关于数据维度的描述,错误的是:

A 采用列表表示一维数据,不同数据类型的元素是可以的

BJSON 格式可以表示比二维数据还复杂的高维数据

8

C 二维数据可以看成是一维数据的组合形式

D 字典不可以表示二维以上的高维数据正确答案: D

27. 以下不属于 Python 的 pip 工具命令的选项是:

A show

B install

C download

D get

正确答案: D

28. 用 Pyinstall 工具把 Python 源文件打包成一个独立的可执行文件,使用

A -D

B -L

C -i

D -F

正确答案: D

29.以下不是程序输出结果的选项是:

import random as r

ls1 = [12,34,56,78]

e(ls1)

print(ls1)

A [12, 78, 56, 34]

B [56, 12, 78, 34]

C [12, 34, 56, 78]

D [12, 78, 34, 56]

正确答案: C

30. 以下关于 turtle 库的描述,正确的是:

A 在 import turtle 之后就可以用 circle() 语句,来画一个圆圈

9

的参数是:

B 要用 from turtle import turtle 来导入所有的库函数

C home() 函数设置当前画笔位置到原点,朝向东

D seth(x) 是 setheading(x)函数的别名,让画笔向前移动 x

正确答案: C

31. 一些重要的程序语言(如 C 语言和 Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用

A 栈

B 堆

C 链表

D 数组

正确答案: A

32. 下列叙述中正确的是

A 一个算法的空间复杂度大,则其时间复杂度必定小

B 一个算法的空间复杂度大,则其时间复杂度也必定大

C 算法的时间复杂度与空间复杂度没有直接关系

D 一个算法的时间复杂度大,则其空间复杂度必定小正确答案: C

33. 为了提高测试的效率,应该

A 随机选取测试数据

B 在完成编码以后制定软件的测试计划

C 取一切可能的输入数据作为测试数据

D 集中对付那些错误群集的程序正确答案: D

34. 软件开发离不开系统环境资源的支持,其中必要的测试数据属于

A 辅助资源

B 硬件资源

10

C 通信资源

D 支持软件正确答案: A

35. 完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是

A 错误推测法

B 白箱测试法

C 黑箱测试法

D 安装测试法正确答案: C

36. 在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有

A 特定的数据模型

B 数据无冗余

C 专门的数据管理软件

D 数据可共享正确答案: A

37. 下列有关数据库的描述,正确的是

A 数据库是一个关系

B 数据库是一个 DBF 文件

C 数据库是一个结构化的数据集合

D 数据库是一组文件正确答案: C

38. 相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性

A 可重用性差

11

B 冗余性

C 非持久性

D 安全性差正确答案: B

39. 软件开发的结构化生命周期方法将软件生命周期划分成

A 定义、开发、运行维护

B 设计阶段、编程阶段、测试阶段

C 总体设计、详细设计、编程调试

D 需求分析、功能定义、系统设计正确答案: A

40. 下列不属于结构化分析的常用工具的是

A 判定树

B 数据字典

C 数据流图

DPAD 图

正确答案: C

二、操作题

101

描述

参照代码模板完善代码,实现下述功能。

从键盘输入一个整数和一个字符,以逗号隔开,在屏幕上显示输出一条信

息。

示例 1:

输入:

请输入 1 个整数和 1 个符号,逗号隔开 :10,@

输出:

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

12

示例 2:

请输入 1 个整数和 1 个符号,逗号隔开 :8,#

########8########

输入输出示例

输入

输出

@@@@@@@@@

示例 1

10,@

@10@@@@@@@@@

@

习题讲解

答案:

#在_____处填写一行代码

ls= input().split(',') (1)

print(ls[0].center(eval(ls[0])*2+len(ls[0]),ls[1])) ( 2)

讲解:

1. 理解 input 的结果是返回一个字符串

2. split 是字符串的方法,能够以逗号把字符串分割成列表,但列表的元素都是字符串

3.用 ls[0] 和 ls[1] 分别取得输入的数字和后面的符号

4.题目要求用一行表达式来解决这个问题,所以增加了难度

5. 此时要想起来用字符串的操作方法 center,问题就迎刃而解了,这个方

法 (x,y) 会用字符串 str 构造一个新的字符串,新的字符串长度是

x, 两

边填充 y。此处的 x 是数字, y 是字符

6. 要记得 ls[0] 里的 10 是一个字符串,所以要记得用 eval 把它变成数字,

乘 2,加上 10 自己的长度,就得到了所需的

x; y 就是 ls[1] 里的字符

7. 这道题关键是深入理解,并灵活运用 center

102

描述

13

参照代码模板完善代码,实现下述功能。

输入一个正整数 n,自动生成 n 个 1-100 范围内的随机浮点数,计算输出每个随机数,并显示平均值。

输入格式

输入一个正整数 n

输出格式

输出 n 个 1-100 范围内的随机浮点数,并显示平均值

输入输出示例

输入

4

输出

27.337682138808397

25.469857251321084

86.7652

3.68464

示例 1

the average is: 35.839

习题讲解

答案:

import random

()

n=eval(input())

sum=0

for i in range(n):

m(1,100)

sum+=f1

print(f1)

print(‘the average is:’,sum/n)

讲解:

1. 要使用 random 随机库,所以要 import random

14

2. 题目限制了程序框架,所以主要考核 uniform (),题目并不难

3. 要能读懂程序,最后就知道求平均数,是用 sum/n

103

描述

参照代码模板完善代码,实现下述功能。

输入一个字符串,检查并统计字符串中包含的英文单引号的对数。如果没

有找到单引号,就在屏幕上显示 “没有单引号 ”;每统计到 2 个单引号,就算一对,如果找到 2 对单引号,就显示 “找到了 2 对单引号 ”;如果找到 3 个单引号,就显示 “有 1 对配对单引号,存在没有配对的单引号 ”。示例如下:

输入:

dfd'dfa'fd'

输出:

有 1 对配对单引号,存在没有配对的单引号输入格式

输入一个字符串

输出格式

检查并统计字符串中包含的英文单引号的对数。如果没有找到单引号,就

在屏幕上显示 “没有单引号 ”;每统计到 2 个单引号,就算一对,如果找到 2 对单引号,就显示 “找到了 2 对单引号 ”;如果找到 3 个单引号,就显示 “有 1 对配对单引号,存在没有配对的单引号 ”。

输入输出示例

输入

输出

示例 1

dfd'dfa'fd'

有 1 对配对单引号,存在没有

配对的单引号

习题讲解

答案:

15

st = input()

pair = 0

count = 0for s in st:

if s == "'":

pair += 1

if pair % 2 == 0:

count += 1if pair == 0:

pro = "没有单引号 "elif pair % 2 == 0:

pro = "有{} 对单引号 ".format(count)else:

pro = "有{} 对配对单引号,存在没有配对的单引号

".format(count)print(pro)

讲解:

多分支结构,分支语句的嵌套

利用对 2 求模运算,来判断单引号是否配对

利用 pro 变量来记录不同情况下的输出内容,最后只用一个

print 来输出显

利用字符串的 format 操作,把合成要输出的变量和提示字符串

201

描述

参照代码模板完善代码,实现下述功能,不得修改其它代码。

使用 turtle 库的 () 函数和 ()函数绘制嵌套六角形,六角形边长从 1 像素开始,第一条边从 0 度方向开始,边长按照 3 个像素递增,效果如下图所示。

输出格式

16

本题暂不支持自动评阅,检查绘制图形无误后,

print('ok') 即可得分。

习题讲解

答案:

#在_____处填写一行代码

#不允许修改其他代码

import turtle

edge = 6

d = 0

k = 1

for j in range(10):

for i in range(edge):

(k(1))

d += 360/edge或 60( 2)

(d)

k += 3(3)

()

讲解:

1. 二重循环,第一道循环控制画的圈数,内循环控制六边形的边数

2.六边形,所以每次画笔旋转的角度是

360/edge,或者直接写 60 也可以

3

3. k 用来控制不断增加的边长,根据题目给的增量是

17

202

描述

参照代码模板完善代码,实现下述功能。实现下面的功能:有一个文件

内容如下:

{'sid':'501','7 月': 9000,'8 月 ':9500,'9 月':9200}

{'sid':'502','7 月 ': 8000,'8 月':8500,'9 月':8200}

{'sid':'503','7 月 ': 7000,'8 月':7500,'9 月':7200}

将文件的数据内容提取出来,计算每个人的平均工资,将其转化为字典

salary,按照 key 的递增序在屏幕上显示输出 score的内容,内容示例如下:

501:[9500, 9000, 9200, 9233]

502:[8500, 8000, 8200, 8233]

503:[7500, 7000, 7200, 7233]

输入格式

有一个文件 内容如下:

{'sid':'501','7 月': 9000,'8 月 ':9500,'9 月':9200}

{'sid':'502','7 月 ': 8000,'8 月':8500,'9 月':8200}

{'sid':'503','7 月 ': 7000,'8 月':7500,'9 月':7200}

输出格式

按照 key 的递增序在屏幕上显示输出 score的内容,内容示例如下:

501:[9500, 9000, 9200, 9233]

502:[8500, 8000, 8200, 8233]

503:[7500, 7000, 7200, 7233]

输入输出示例

输入

输出

501:[9500, 9000, 9200, 9233]

示例 1

读文件

502:[8500, 8000, 8200, 8233]

503:[7500, 7000, 7200, 7233]

18

附件

序号

名称 程序内使用说明

1

习题讲解

salarys = {}

fi = open("",'r',encoding='utf-8')

for l in fi:

# print(l)

stud = eval(l)

sv = ()

v = []

k = ''

for it in sv:

if it[0] =='sid':

k = it[1]

else:

(it[1])

else:

(sum(v)//len(v))

salarys[k] = v

()

# print(scores)

so = list(())

(key = lambda x:x[0],reverse = False)for l in so:

print('{}:{}'.format(l[0],l[1]))

讲解:

19

1. 有读文件,写入字典,取出到列表,排序,显示输出

2. 先从文件中按行读取数据,通过 eval()变换成字典,然后通过 items()获取每个字典的键值对构成的列表

3. 每个字典项的键值对有四个元组,对四个元组做遍历循环,构造所需要

的新字典 salarys

4. 新字典的键是 it[0] 为‘ sid对’应的 it[1] ;而值则是其他 it[0] 对应的 it[1] ,

要将这些 it[1] 通过 append()拼成一个新的列表 v,

5. 一组字典项处理完成之后,要用对 v 的求和函数和求长度函数返回的值,

计算平均分,并且也 append到 v 列表里

6. 最后把 k 和 v 加到 salarys里,生成新的字典

7. 对新的字典提取 items 构成列表,对列表按照键 sid 的升序排序,并输出

显示。

301

描述

参照代码模板完善代码,实现下述功能,可以修改其它代码。

附件文件 中有若干道 Python 选择题目,第 1 行的第 1 个数据为

题号,后续的 4 行是 4 个选项,接下来是第二道题。示例内容如下:

1. 以下关于字典类型的描述,错误的是:

A. 字典类型中的数据可以进行分片和合并操作

B. 字典类型是一种无序的对象集合,通过键来存取

C. 字典类型可以在原来的变量上增加或缩短

D. 字典类型可以包含列表和其他数据类型,支持嵌套的字典

24. 以下属于 Python 图像处理第三方库的是:

A. PIL

B. mayavi

C. TVTK

D. pygame

读取其中的内容,提取题干和四个选项的内容,利用

jieba 分词并统计出现

频率最高的 3 个词,其中要删除以下的常用字和符号

的, ::可以是和中或一个以下

“”了其时产生 DBC

(第一个字符是空格 )

作为该题目的主题标签,显示输出在屏幕上。

示例如下:

20

输出格式

统计每道题出现频率最高的

3 个词,显示输出在屏幕上。示例如下:

第 1 题的主题是:字典 :6

类型 :5

对象 :1

第 24 题的主题是:库:1

Python:1

属于 :1

输入输出示例

输入

输出

第 1 题的主题是:

示例 1

字典 :6

类型 :5

对象 :1

第 24 题的主题是:

库:1

Python:1

属于 :1

附件

序号

名称 程序内使用说明

1

21

习题讲解

答案:

import jieba

def qtopic(con):

conls = (con)

dict = {}

for word in conls:

dict[word] = (word,0) + 1

dictls = list(())

(key=lambda x: x[1], reverse=True)

k = 0

for it in dictls:

if it[0] in ' 的, ::可以是和中或一个以下

“”了其时产生 DBC':

continue

else:

if k == 3:

break

else:

print('{}:{}'.format(it[0], it[1]))

k += 1

fi = open("", 'r')

con = ''

num1 = 0

flag = 0

for l in fi:

l = e('n', '').strip().split('.')

# print(l)

try:

ft = eval(l[0])

except:

22

pass

else:

flag += 1

num2 = num1

num1 = ft

if flag > 1:

print('第 {} 题的主题是: '.format(num2))

qtopic(con)

con = ''

con += l[1]

print('第 {} 题的主题是: '.format(num1))

qtopic(con)

()

讲解:

1. 要用 jieba 分词, import jieba

2. 打开 看到,不止一道题目和选项,所以要考虑用函数来实现分析一道题目的功能,然后在主程序里调用函数,实现分析多道题目的功能

3.打开 -读文件 -关闭文件的操作,就不解释了,属于基本功

4. 用 for 循环按行处理文件,然后用 replace替换掉回车, strip 去掉首尾空

格,用 split 把每行切分成两部分,用 ‘来.’分割

5. 题目要求输出 “第 1 题的主题是: ”这样的提示语,所以,需要提取出每道题的题号,是数字,而每个选项是字母 ABCD ,这就需要考虑区分不同的行首情况;

6.为了提高效率,利用

try-except 语句来区分行首是数字还是字母。

7.每行的列表的 l[0] 就是首字符,所以把 ft = eval(l[0]) 放在 try 下面,就可

以区分出来数字和字母了

8. 巧妙利用 try 后面的 except和 else结构是这道题的关键。 except情况下,不用额外做动作,只是直接 pass就可以,直接执行 try 结构后续的 con += l[1] ,用字符串加法,加到 con 里面去;

23

9.没有异常的情况,可以用

else结构来处理,这块代码就是把题号提取出

来显示提示在屏幕上,然后分析选项内容;

10. 此时遇到新问题,抓到第一个题号的时候,还没有取到后面的选项内容,是不能做选项分析的;得等抓到第二个题号,或者是整个文件结束了之后,才能把搜集到的选项字符串,送给选项分析函数去处理;所以这里有需要一个技巧。

11. 引入一个标志计数器 flag,当抓到一个题号时, flag 就加 1。当 flag 大

于 1 的时候,表明第一道题的选项已经读完了,可以显示

“第 1 题的主题是: ”

这个提示,并且把读到的选项字符串拿去分析了;同时还要为读下一道题的选

项把存放选项字符串的变量

con 重新初始化为 ‘’;

12. 对于每道题,无论行首是字母还是数字,都要把文件内容拿去分析,所以在 try 结构之后,都有一句 con += l[1] ,用来把读到的每行里的文字串,加到

con 变量上去

13.此时还要处理一个情况,就是每次读到下一道题的题号

num1 的时候,

需要显示上一道题的提示信息和分析结果,所以需要在把新读到的题号

ft 赋值

给 num1 之前,要用一个变量 num2 来保存上一个 num1 的值;然后显示的是前一个 num2,即语句: print('第{} 题的主题是: '.format(num2))

14. 在 for 循环之外,还要处理最后一道题,因为最后一道题后面没有带题

号的内容,而是文件结束了,所以在文件

for 循环之外, con 里面还记录着最后

num1

一道题的内容,需要再单独显示输出

“第?题的主题是: ”这个提示,此时

里面就是刚刚读到的最后一个题号,并且调用一次选项分析函数

qtopic(con),

做分析并显示结果

15.接下来看分析函数 qtopic,参数就是从文件里搜集到的一道题目的题目

和选项的所有文字组成的字符串;,

16. 首先要用 jieba 切分长字符串,然后用字典,统计每个词出现的次数

for word in conls:

dict[word] = (word, 0) + 1

17. 因为要找出现次数最多的词,所以要把字典的项提取出来形成列表

dictls= list(()) ;按照出现次数排序, (key=lambda x:

x[1], reverse=True);

24

18. 接下来,要输出有意义的词汇,需要把出现次数多但在给出的黑名单里的词及其次数跳过,所以需要一个循环按顺序遍历排好序的列表

19. 题目要求只显示 3 个出现次数最多的词汇,并且要跳过黑名单里的词,所以这里不能贸然的循环三次,输出前三个出现最多的词汇,而是要先判断是否在黑名单里;

20. 注意,列表里的元素是一对元组,

it[0] 是词汇, it[1] 是出现的次数,所

以要用 it[0] 检查是否在黑名单里,如果在就用

continue 跳过,看下一个;如果

不在黑名单,就是能够显示出来的词汇

20. 对能够显示的词汇做计数,加一个计数器 k,如果等于 3 了,就用

break跳出循环,否则的话就显示,并且让

k 加 1

21. 到此程序就写完了。

25


本文标签: 字符串 输出 代码