【计算机二级】综合题目

文章提供了计算机二级Python考试的题目解析,包括从HTML页面提取大学名称,统计含有大学和学院的名称数量,以及对文本进行词频分析和句子分割。此外,还涉及了价值链分析和根据词频输出相关句子的处理方法。
摘要由CSDN通过智能技术生成

计算机二级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])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guan12319

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值