命运三问实例

该题一共3个小问题,分别拆开成为3道题分别解答。1 个文本文件作为本题目的输入数据,请按照源文件内部说明修改代码,实现以下功能:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬
《命运》是著名科幻作家倪匡的作品。这里给出《命运》的一个网络本文件,文件名为“命运.txt”
问题1:对“命运.txt”文件进行字符频次统计,输出频次最高的中文字符(不包括标点符号)及其频次,字符与频次之间采用英文冒号“:”分隔,示例格式如下
理:224

f= open("命运.txt", "r", encoding="utf-8") #正式考试可以不用指定编码,用系统默认。<f>.read()读入全部内容。“命运”是一个中文文本。
txt=f.read()
f.close()
for ch in ",。?:":
    txt = txt.replace(ch, "")  #用空位代替标点符号,即去掉文本中的标点符号
d = {}  #创建一个空字典
for ch in txt:
    d[ch] = d.get(ch, 0) + 1  #用当前的某一个词作为键索引字典。d.get(k,<default>):键k存在,则返回相应值,不存在则返回 <default>值。如果当前的词在字典中,就返回它的次数,后面+1;如果这个词不在字典中,就把它加到字典中,并且赋给当前的值为0.
ls = list(d.items())  #d是一个字典,键为词,值为对应的出现次数。<d>.items()返回所有的键值对,list()函数将返回值转换成列表
ls.sort(key=lambda x: x[1], reverse=True)  #sort方法中的lambda用来指定在列表中使用哪一列作为排序列。默认的排序方法是从小到大,若reverse=True,则返回的排序就是从大到小。这行代码的功能就是对一个列表按照键值对的2个元素的第2个元素进行排序。
a, b = ls[0]
print("{}:{}".format(a, b))

问题2:对“命运.txt”文件进行字符频次统计,按照频次由高到低,在屏幕输出前10个频次最高的字符,不包含回车符,字符之间无间隔,连续输出,示例格式如下;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

理斯卫…(后略,共10个字符)

f = open("命运.txt", "r", encoding="utf-8")
txt=f.read()
f.close()
for ch in '\n':
    txt = txt.replace(ch, "")
d = {}
for ch in txt:
    d[ch] = d.get(ch, 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="") 

问题3:对“命运.txt”文件进行字符频次统计,将所有字符按照频次从高到低排序,字符包括中文、标点、英文等符号,但不包含空格和回车。将排序后的字符及频次输出到考生文件夹下,文件名为“命运-频次排序.txt”。 字符与频次之间采用英文冒号“:”分隔,各字符之间采用英文逗号“,”分隔,参考CSV格式,最后无逗号,文件内部示例格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬

理:224,斯:120,卫:100

f = open("命运.txt", "r", encoding="utf-8")
txt=f.read()
f.close()
for ch in ' \n':
    txt = txt.replace(ch, "")
d = {}
for ch in txt:
    d[ch] = d.get(ch, 0) + 1
ls = list(d.items())
ls.sort(key=lambda x: x[1], reverse=True)  # 此行可以按照词频由高到低排序
string = ""#创建一个空字符串
for i in range(len(ls)):
    s = str(ls[i]).strip("()") #ls[i]是列表的第i个元素,形式为('的', 2557)。str.strip(chars),返回字符串str的副本,在其左侧和右侧去掉chars中列出的字符。这行代码的意思指去掉字符串两侧的括号,变成'的', 2557,注意逗号之后有个空格
    if i < len(ls) - 1:  #range(len(ls))表示从0到len(ls)-1的数,最大值为len(ls)-1,即右侧,左侧i是词频顺序。这行代码表示除最后一行的其余行。
        string = string + s[1] + ':' + s[5:] + ','  #右侧第一个string最开始是空字符串,s[1]表示词本身,s[5:]表示词频数字。题目要求字符与频次之间采用英文冒号“:”分隔,各字符之间采用英文逗号“,”分隔
    else:
        string = string + s[1] + ':' + s[5:]  #最后一个字符题目要求最后无逗号
f = open("命运-频次排序.txt", "w", encoding="utf-8")
f.write(string)
f.close()
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例医疗信息化的三个实例

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值