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

计算机二级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()
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

guan12319

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

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

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

打赏作者

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

抵扣说明:

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

余额充值