计算机二级python真题
一、简单应用题——村长选举
描述:
使用字典和列表型变量完成村长选举。某村有40名有选举权和被选举权的村民,名单在附件name.txt中,从这40名村民中选出一人当村长,40人的投票信息由附件vote.txt中给出,每行是一张选票的信息,有效票中得票最多的村民当选。
问题一:请从vote.txt 中筛选出无效票写入文件vote1.txt。有效票的含义是:选票中只有一个名字且该名字在name.txt文件列表中,不是有效票的票称之为无效票。
代码:
fi=open("name.txt")
names=fi.readlines()
fi.close()
fo=open("vote.txt")
votes=fo.readlines()
fo.close()
D={}
NUM=0
for vote in votes:
num = len(vote.split())
if num==1 and vote in names:
D[vote[:-1]]=D.get(vote[:-1],0)+1
NUM+=1
else:
with open("vote1.txt","a+",encoding="utf-8") as f:
f.write("{}".format(vote))
描述:
第二问:使用字典和列表型变量完成村长选举。某村有40名有选举权和被选举权的村民,名单在附件name.txt中,从这40名村民中选出一人当村长,40人的投票信息由附件vote.txt中给出,每行是一张选票的信息,有效票中得票最多的村民当选。
问题:给出当选村长的名字及其得票数。
代码:
fi=open("name.txt")
names=fi.readlines()
fi.close()
fo=open("vote.txt")
votes=fo.readlines()
fo.close()
D={}
NUM=0
for vote in votes:
num = len(vote.split())
if num==1 and vote in names:
D[vote[:-1]]=D.get(vote[:-1],0)+1
NUM+=1
ls=list(D.items())
ls.sort(key=lambda s:s[1],reverse=True)
name=ls[0][0]
score=ls[0][1]
print("有效票数为:{} 当选村民为:{},票数为:{}".format(NUM, name, score))
二、综合应用题——《命运三问》
该题一共3个小问题,分别拆开成为3道题分别解答。1个文本文件作为本题目的输入数据,请按照源文件内部说明修改代码,实现以下功能:
《命运》是著名科幻作家倪匡的作品。这里给出《命运》的一个网络本文件,文件名为“命运.txt"
本题解答 问题一
在右侧修改代码,对"命运.txt"文件进行字符频次统计,输出频次最高的中文字符(不包括标点符号)及其频次,字符与频次之间采用英文冒号 ":"分隔
,示例格式如下:
理:224
代码:
fi = open("命运.txt", "r", encoding="utf-8")
txt = fi.read()
fi.close()
for ch in ",。?:":
txt = txt.replace(ch, "")
d = {}
for c in txt:
d[c] = d.get(c, 0) + 1
ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True)
print("{}:{}".format(ls[0][0],ls[0][1]))
问题二
在右侧的编程模板中修改代码,对“命运.txt"文件进行字符频次统计,按照频次由高到低,在屏幕输出前10个频次最高的字符,不包含回车符
,字符之间无间隔,连续输出,示例格式如下:
理斯卫…(后略,共10个字符)
代码:
fi = open("命运.txt", "r", encoding="utf-8")
txt = fi.read()
fi.close()
for ch in "\n":
txt = txt.replace(ch, "")
d = {}
for c in txt:
d[c] = d.get(c, 0) + 1
ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True)
for i in range(10):
print(ls[i][0],end="")
问题三
在右侧修改代码,对“命运.txt”文件进行字符频次统计,将所有字符按照频次从高到低排序,字符包括中文、标点、英文等符号,但不包含空格和回车
。将排序后的字符及频次输出到考生文件夹下,文件名为“命运-频次排序.txt”。 字符与频次之间采用英文冒号“:“分隔,各字符之间采用英文逗号"."分隔,参考CSV格式,最后无逗号,文件内部示例格式如下:
理:224,斯:120,卫:100
代码:
fi = open("命运.txt", "r", encoding="utf-8")
txt = fi.read()
fi.close()
for ch in " \n":
txt = txt.replace(ch, "")
fo = open("命运-频次排序.txt","w")
d = {}
for c in txt:
d[c] = d.get(c, 0) + 1
ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True)
string = ""
for j in ls:
string += '{}:{}'.format(j[0],j[1])+','
fo.write(string[:-1])
fo.close()