计算机二级python真题
一、简单应用题
描述
模板中给出的代码是本题目的提示框架,其中代码可以任意修改。请在该文件中删除横线,编写代码,以实现一下功能:
键盘输入小明学习的课程名称及考分等信息,信息间采用空格分隔,每个课程一行,空行回车结束录入,示例格式如下:
数学 90
语文 95
英语 86
物理 84
生物 87
屏幕输出得分最高的课程以及成绩,得分最低的课程及成绩,以及平均分(保留2位小数)。
注意,其中逗号为英文逗号,格式如下;
是高公课程早语文95,是低公课程早物理84,平均公早88.40
代码:
data = input() # 课程名 考分
d = {}
while data:
t=data.split()
d[t[0]]=int(t[1])
data = input()
ls = list(d.items())
ls.sort(key=lambda x:x[1],reverse = True)
course_1,max_score = ls[0]
course_2,min_score = ls[len(ls)-1]
sum = 0
for i in d.values():
sum += int(i)
avg = sum/len(ls)
print("最高分课程是{}{}, 最低分课程是{}{}, 平均分是{:.2f}".format(course_1,max_score,course_2,min_score,avg))
二、综合应用题《人工智能分词 两问》
在附件中有一个data.txt文件是一个来源于网上的技术信息资料。
本题回答问题1
在右侧的编程框内,补充修改代码完成程序。用Python语言中文分词第三方库jieba对文件data.txt进行分词,并选择长度大于等于3个字符的关键词,写入文件out1.txt,每行一个关键词,各行的关键词不重复,输出顺序不做要求,例如:
人工智能
科幻小说
……
代码1:
import jieba
fi = open("data.txt","r",encoding="utf-8")
lines = fi.readlines()
fi.close()
d = []
fo = open('out1.txt','w',encoding="utf-8")
for line in lines:
wordlist = jieba.lcut(line)
for word in wordlist:
if len(word) < 3:
continue
else:
if word not in d:
d.append(word)
fo.writelines("\n".join(d))
fo.close()
代码2:
import jieba
fi = open("data.txt","r")
lines = fi.readlines()
fi.close()
words = []
fo = open('out1.txt','w')
for line in lines:
line = line.strip("\n")
wordlist = jieba.lcut(line)
for word in wordlist:
if len(word)>=3 and (word not in words):
words.append(word)
else:
continue
for word in words:
fo.write(word+'\n')
#fo.writelines('\n'.join(words))
fo.close()
本题回答问题2
右侧编程框中给出部分代码,补充完成程序,对文件data.txt进行分词,对长度不少于3个字符
的关键词,统计出现的次数,按照出现次数由大到小
的顺序输出到文件out2.txt,每行一个关键词机器出现次数
,例如:
科学家:2
达特茅斯:1
……
代码:
import jieba
fi = open("data.txt","r",encoding="utf-8")
lines = fi.readlines()
fi.close()
d = {}
for line in lines:
wordlist = jieba.lcut(line) # 用结巴分词,对每行内容进行分词
for word in wordlist:
if len(word) < 3:
continue
else:
d[word] = d.get(word,0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 此行可以按照词频由高到低排序
fo = open("out2.txt","w",encoding="utf-8")
for i in range(len(ls)):
fo.write("{}:{}\n".format(ls[i][0],ls[i][1]))
fo.close()