【计算机二级python】综合题题目

计算机二级python真题



在这里插入图片描述


一、八十天环游世界(综合题)

附件中保存1个文本文件,分别对应2个问题‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

其中,文本文件“八十天环游地球.txt”是法国作家儒勒. 凡尔纳《八十天环游地球》长篇小说的网络版本,请修改源文件实现以下功能。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

二、八十天环游世界 问题一

问题1:提取章节题目并输出到文件。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

要求:在模板中补充代码, 提取“八十天环游地球. txt” 中所有章节的题目,并且将提取后的题目输出到“八十天环游地球-章节. txt"文件中,每行一一个标题,示例如下:

第一章 斐利亚·福克和路路通建立主仆关系
第二章 路路通认为他总算找到了理想的工作
第三章 一场可能使福克先生破财的争论
第四章 斐利亚·福克把路路通吓得目瞪口呆
第五章 伦敦市场上出现了一种新的股票

f = open("八十天环游地球.txt", encoding="utf-8")  # 读取源文件
fi = open("八十天环游地球-章节.txt", "w", encoding="utf-8")  # 打开新文件
for i in f:  # 遍历文本
    text = i.split(" ")[0]  # 章节中有空格进行分割 例如:第二章 路路通认为他总算找到了理想的工作 ,重要提示: 双引号中间的是一个空格, 如果你的浏览器显示出来一个原点,是浏览器的显示问题, 建议更换谷歌浏览器
    if text[0] == "第" and text[-1] == "章":  # 取出第一段文本,如果首字符是第尾字符是章,代表是章节
        fi.write("{}\n".format(i.replace("\n", ""))) # 格式化保存
fi.close()
f.close()

二、八十天环游世界 问题二

问题2:统计每章节的高频词并打印输出。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

要求:在模板补充代码,统计“八十天环游地球. txt”中每一章的标题和内容中,出现次数最多的词语(词语长度不少于2个字符)及其次数,输出格式为章节名、 词语及其出现的次数,以空格分隔,示例如下:

第一章 福克 25
第二章 路路通 17
第三章 福克 26
第四章 福克 27
第五章 福克 31

import jieba
import re

strf = '八十天环游地球.txt'

with open(strf, encoding='utf-8') as f:
    lines = f.read()
    t = re.findall('(第.{1,3}章.*)', lines)


with open(strf, encoding='utf-8') as f:
    lines = f.read()
    s = re.sub('(第.{1,3}章.*)', '$', lines)
    x = s.split('$')
    x = x[1:]


# 计算词频并输出结果。
for i, j in zip(t, x):
    counts = {}
    txt = jieba.lcut(i+j)
    for word in txt:
        if len(word) >= 2:
            counts[word] = counts.get(word, 0) + 1
    li = list(counts.items())
    li.sort(key=lambda x: x[1], reverse=True)
    word_max, count_max = li[0]
    chapter = re.findall('(第.*章)', i)[0]
    print(chapter + ' ' + word_max + ' ' + str(count_max))

Python re模块:https://www.cnblogs.com/shenjianping/p/11647473.html

在这里插入图片描述

Python zip()函数:https://www.runoob.com/python/python-func-zip.html

代码 2

import jieba

fi1 = open("D:/Code/PythonCode/八十天环游地球-章节 (1).txt","r")
chapter = fi1.read().split("\n") #这里存放的是章节名
fi1.close()
fi2 = open("D:/Code/PythonCode/八十天环游地球.txt","r")
content = fi2.read().split("\n") #这里存放的是文本内容
fi2.close()

ch = 0 #章节名对应的变量
co = 1 #用来判断内容所在的章节数
ls = [] #用来存储每个章节内容和标题分词的结果

for i in content:
    if i in chapter:
        ch+=1
    if ch == co:
        words = jieba.lcut(i)
        for word in words:
            ls.append(word)
    else:
        d={}
        for word in ls:
            if len(word)>=2:
                d[word]=d.get(word,0)+fi1
        lt=list(d.items())
        lt.sort(key=lambda x:x[1], reverse=True)
        title = chapter[co-1].split(" ")
        print("{} {} {}".format(title[0],lt[0][0],lt[0][1]))
        k +=1
        ls = []

四、统计操作时间(简单应用)

描述

在省略号处填写一行或多行代码,完成如下功能。

同时,out.txt,其中有一些数据库操作功能的执行时间信息,如下所示:

示例

starting,0.000037,2.102
After opening tables,0.000008,0.455
System lock,e.000004,0.227

其中第1列是操作的名字,第2列是操作所花费的时间,单位是秒,第3列是操作时间占全部过程的百分比,字段之间用逗号,隔开。

读取out.txt文件里的内容,统计所有操作所花费的时间总和,并输出操作时间百分比最多的三个操作所占百分比的值,及其对应的操作名称,显示在屏幕上,如下所示:

示例

the total execute time is 0.001724
the top 0 percentage time is 46.023, spent in “Filling schema table” operation
the top 1 percentage time is 36.932, spent in “Sending data” operation

sumtime = 0
percls = []
ts = {}
with open('out.txt', 'r') as f:
    for line in f:
        percls.append(line.strip('\n').split(","))

n=[x[1] for x in percls]
for i in range(len(n)):
    sumtime+=eval(n[i])

ts={x[0]:x[2] for x in percls}

print('the total execute time is ', sumtime)

tns = list(ts.items())
tns.sort(key=lambda x: x[1], reverse=True)
for i in range(3):
    print('the top {} percentage time is {}, spent in "{}" operation'.format(i, tns[i][1],tns[i][0]))

Python列表推导式:https://www.runoob.com/python3/python-comprehensions.html

Python列表推导式:https://www.codenong.com/20639180/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

guan12319

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

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

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

打赏作者

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

抵扣说明:

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

余额充值