Python二级试题:统计文本中不同词的出现频率

题目


键盘输入一组水果名称并以空格分隔,共—行。示例格式如下:
苹果  芒果  草莓  芒果  苹果  草莓  芒果  香蕉  芒果  草莓
统计各类型的数量,从数量多到少的顺序输出类型及对应数量,以英文冒号分隔,每个类型一行。输出结果保存在考生文件夹下,命名为“PY202.txt”。输出参考格式如下:
芒果:4
草莓:3
苹果:2
香蕉:1
代码模板

// 考生文件初始代码
fo = open("PY202.txt","w")
txt = input("请输入类型序列: ")
...
d = {}
....
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in ls:
fo.write("{}:{}\n".format(k[0], k[1]))
fo.close()

编程思路


第1步:将存储水果名称的字符串对象转换为列表对象
题目要求用户输入一组水果名称,每个水果名称以空格分隔,允许输入重复的水果名称。程序使用input函数接收用户输入的内容,input函数返回的是字符串,调用字符串对象的split函数按空格切分字符串,该函数返回字符串切分后的列表对象。
列表变量 = 字符串对象.split(“ ”)
第2步:统计水果名称的出现次数
结合题目内容,水果名称次数的统计数据存储在字典对象中,字典元素的key为水果名称,字典元素的value为水果在字符串中出现的次数。遍历存储水果名称的列表,调用字典对象的get(key,defaltvalue)返回指定key的value,若key或key的value不存在,则返回默认指定的key和defaltvalue。
for 水果名称 in 水果名称列表:
字典对象[key] = 字典对象.get(水果名称,0) + 1
第3步:字典排序并写入文件
字典按照数量降序排序,字典对象并不支持排序,可以把字典对象转换为列表对象,使用字典对象的items()方法以列表方式返回字典对象的键值对。再调用列表对象的sort函数排序。
第4步:列表对象写入文件
使用内置open函数以w模式打开"PY202.txt"文件,遍历列表对象,调用文件对象的write函数按照题目要求格式将数据写入文件。

完整代码

fo = open("PY202.txt","w")
txt = input("请输入类型序列: ")
fruits = txt.split(" ")
d = {}
for fruit in fruits:
d[fruit] = d.get(fruit,0) + 1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in ls:
fo.write("{}:{}\n".format(k[0], k[1]))
fo.close()