考生文件夹下存在两个Python源文件PY30H.Py和PY301—2.Py,分别对应两个问题,请按照文件内说明修改代码,实现以下功能: 《傲慢与偏见》是史上最震撼人心的“世界文学十部最佳小说之一”。第一章的内容由考生文件夹下文件arrogant.

admin2020-04-10  45

问题 考生文件夹下存在两个Python源文件PY30H.Py和PY301—2.Py,分别对应两个问题,请按照文件内说明修改代码,实现以下功能:
    《傲慢与偏见》是史上最震撼人心的“世界文学十部最佳小说之一”。第一章的内容由考生文件夹下文件arrogant.txt给出。
    问题1:请编写程序,统计该篇文章的英文字符数(不统计换行符),字符与出现次数之间用英文冒号“:”分隔。结果保存在考生文件夹下,命名为“PY301—1.txt”。
    试题程序:
    #以下代码为提示框架
    #请在程序的…处使用一行或多行代码替换
    #请在程序的_______处使用一行代码替换
    #注意:提示框架代码可以任意修改,以完成程序功能为准
    …
    d={}
    …
    ls=list(d.items())
    …

    fo.write(”{}:{}\n”.format(________,_______))
    问题2:在问题1的前提下,将得到的字符次数进行排序,并将排名前10的常用字符保存在”afrogant—sort.txt”文件中。
    试题程序:
    #以下代码为提示框架
    #请在程序的…处使用一行或多行代码替换
    #请在程序的______处使用一行代码替换
    #注意:提示框架代码可以任意修改,以完成程序功能为准
    …
    d={}
    …
    ls=list(d.items())
    ls.sort(key=lambda x:x[1],reverse=True)
    …
    fo.write(“{}:{}\n”.format(_______,______))
    …

选项

答案(1)fi=open("arrogant.txt","r") fo=open("PY301-1,txt","w") txt = fi.read() d = {} for s in txt; d[s]=d.get(s,0)+1 del d[’\n’] ls=list(d.items()) for i in range (len(ls)); fo.write(”{}:{}\n”.format(ls[i][0],ls[i][1])) fi.close() fo.close() (2)fi=open("arrogant.txt","r") fo=open("arrogant-sort.txt","w") txt=fi.read() d= {} for s in txt; d[s]=d.get(s,0) + 1 del d[’\n’] ls=list(d.items()) ls.sort(key=lambda x:x[1],revere=True) for i in range(10); fo.write(”{}:}}\n”.formal(ls[i][0],ls[i][1])) fi.close() fo.close()

解析 (1)首先使用open()函数打开文件“arrogant.txt”,把文件的内容通过.read()方法保存到变量txt中;然后用for循环遍历txt中的每个英文字符,将该字符作为字典d中的一个键,该键所对应的值置为1,在后面循环中只要遍历的字符与该键相同,就将该键对应的值加1。这样,字典中的键值对对应着英文字符和出现的次数。由于题目要求不统计换行符,因此需要使用del删除换行符对应的键值对。
    ls=list(d.items())表示将字典类型变成列表类型,字典中的每个键值对对应列表中的一个元组。每个元组中的第一个元素ls[0]表示英文字符,第二个元素ls[1])表示字符出现的次数。通过for循环遍历按照格式规则将两个对应的元素写入到文件“PY301一1.txt”中。
    (2)问题2在问题1的基础上增加了排序,排序的规则是按照字符出现的次数降序排序,因此排序后列表中前10个元素(元组)就是排名前10的字符。通过for循环遍历按照格式规则将这10个元素写入到文件“arrogant—sort.tx”中。
转载请注明原文地址:https://jikaoti.com/ti/Rw50FFFM
0

最新回复(0)