计算机二级python真题
文章目录
- 计算机二级python真题
- 一、《大学慕课 两问 》
- 二、综合应用题——价值链
- 三、基本操作题 ——信息输出
一、《大学慕课 两问 》
附件中的文件data.txt 是教育部爱课程网中国大学MOOC平台的某个 HTML页面源文件,里面包含了我国参与MOOC建设的一批大学或机构列表。
本题解答问题1
问题1:请编写程序,从data.txt中提取大学或者机构名称列表,将结果写入文件univ.txt,每行一个大学或者机构名称,按照大学或机构在data.txt出现的先后顺序输出,样例如下:
……
北京理工大学
……
北京师范大学
……
提示:所有大学名称在data.txt文件中以 alt="北京理工大学”形式存在。
代码:
with open("data.txt","r",encoding="utf-8") as f:
lines = f.readlines()
f = open("univ.txt", "w")
for line in lines:
if "alt=" in line:
# 判断是否有alt,若有则用'alt'分割,分割后再用'"'分割
d = line.split("alt=")[-1].split('"')[1]
f.write("{}\n".format(d))
f.close()
本题解答问题2:
请编写程序,从univ.txt文件中提取大学名称,大学名称以出现“大学”或“学院"字样为参考,但不包括“大学生”等字样,将所有大学名称在屏幕上输出,大学各行之间没有空行,最后给出名称中包含"大学”和“学院”的名称数量,同时有大学和学院做大学处理。样例如下(样例中数量不是真实结果):
……
北京理工大学
……
长沙师范学院
……
包含大学的名称数量是10
包含学院的名称数量是10
代码:
n = 0 # 记录大学数量的计数器n
m = 0 # 记录学院数量的计数器m
with open("univ.txt", "r", encoding="utf-8") as f: # 以读的方式打开文件univ.txt
lines = f.readlines() # 返回一个列表,列表中每一个元素对于文件中每一行
for line in lines: # 遍历列表中每一个元素
line = line.replace("\n", "") # 去除元素中的换行符
if '大学生' in line: # 如果列表元素中包含"大学生"字符串,不做计数
continue
elif '大学' in line: # 基于列表元素中不包含"学院"字符串,而包含"大学"字符串。
# 同时有大学和学院做大学处理,例如 中国社会科学院大学 (考点)
print('{}'.format(line)) # 计数为大学+1,例如南京大学
n += 1
elif '学院' in line: # 如果列表元素中包含"学院"字符串,则默认计数为学院+1
print('{}'.format(line)) # 例如:江苏理工学院,归属于学院
m += 1
print("包含大学的名称数量是{}".format(n)) # 输出大学计数
print("包含学院的名称数量是{}".format(m)) # 输出学院计数
二、综合应用题——价值链
附件中有素材文件 data3.txt ,文件内容示例如下:
商业模式价值链由三个环节组成:产品、工具、社区。我们团队以一站式系统开发为当前主要产品,利用XAMPP, PHPSTORM, 微信开发者工具等软件根据客户要求提供合适的一体化管理系统。
… (略)
请编程实现如下功能:
(1)统计文件中出现词频最多的前10个长度不小于2个字符的词语,将词语及其出现的词频数按照词频数递减排序后显示在屏幕上,每行显示-一个词语,用英文冒号连接词语及其词频。
示例如下:
我们: 5
系统: 3
微信: 3
…(略)
import jieba
dict_words = {}
with open('data3.txt', 'r', encoding='GBK') as f:
txt = f.read()
wordlist = jieba.lcut(txt)
for word in wordlist:
if len(word)>=2:
dict_words[word]=dict_words.get(word,0)+1
ls=list(dict_words.items())
ls.sort(key=lambda x:x[1],reverse=True)
for i in range(10):
print("{}:{}".format(ls[i][0],ls[i][1]))
(2)将文档以中文逗号及中文句号为分隔符分割成短句,将包含最高词频的词语的句子,输出到文件out. txt中,每句一行,示例如下:
以此为我们吸引更多的商机
同时普及我们的一站式开发技术
…(略)
代码:
fi = open('data3.txt','r',encoding='GBK')
lines = fi.read().strip().split('。')
fi.close()
ls=[]
for line in lines:
linelist = line.strip().split(',')
for line in linelist:
if '我们' in line:
ls.append(line)
fi.close()
fo = open('out.txt','w')
for i in ls:
fo.write("{}\n".format(i))
fo.close()
三、基本操作题 ——信息输出
参照代码模板完善代码,实现下述功能。从键盘输入一个整数和一个字符,以逗号隔开,在屏幕上显示输出一条信息。
示例1:
输入: “10,@”
输出: “@@@@@@@@@@10@@@@@@@@@@”
代码 1:
ls= input().split(',') #将从键盘上输入的用逗号隔开的字符串转换为列表
#例如输入:10,@
#ls为['10', '@']
#ls[0]为'10' ,eval(ls[0])*2+len(ls[0])表达式值为22
#ls[1]为'@'
print(ls[0].center(eval(ls[0])*2+len(ls[0]),ls[1]))
#'10'.center(22,"@")即为输出结果,考察字符串的center方法
#str.center(x,y) 会用字符串str构造一个新的字符串,
#新的字符串长度是x, 两边填充y。此处的x是数字,y是填充字符
# str:'10'
# x:22
# y:"@"
#输出结果为"@@@@@@@@@@10@@@@@@@@@@"
代码 2:
ls= input().split(',')
print(eval(ls[0])*ls[1]+ ls[0] + eval(ls[0])*ls[1])