描述
读取附件是一篇英文短文,请编写程序统计这篇短文前 n 行中每一个英文字母出现的次数,结果按次数降序排列,次数相同时,按字母表顺序输出。若 n 值大于短文行数,输出整篇文章中每一个英文字母出现的次数(大写字母按小写字母统计)。
输入格式
输出格式
分行输出每个字母的数量,数量占3个字符宽度,居右对齐(参考示例输出)
定义一个函数,以文件名和以读取的行数n为参数,读取文件的前n行,把每行的字符串中的大写字母转为小写,再加入到一个列表中。
def openFile(filename,n):
with open(filename,'r',encoding='utf-8') as data:
txt = [data.readline().lower() for i in range(n)]
return txt
以从文件中读取到的列表为参数,把列表中的元素拼接为一个字符串,遍历小写字母,统计每个字母在字符串中出现的次数加入列表或字典,本文使用字典存储。
def statistics(txt,s):
mystr = ' '.join(txt)
dic = {x:mystr.count(x) for x in s}
ls = sorted(dic.items(),key=lambda item:(-item[1],item[0]))
return ls
完整参考代码如下:
def openFile(filename,n):
with open(filename,'r',encoding='utf-8') as data:
txt = [data.readline().lower() for i in range(n)]
return txt
def statistics(txt):
mystr = ' '.join(txt)
dic = {x:mystr.count(x) for x in s}
ls = sorted(dic.items(),key=lambda item:(-item[1],item[0]))
return ls
if __name__ == '__main__':
s = 'abcdefghijklmnopqrstuvwxyz'
file = 'The Old Man and the Sea.txt'
n = int(input())
txt = openFile(file,n)
ls = statistics(txt)
for x in ls:
print('{} 的数量是 {:>3} 个'.format(x[0], x[1]))