统计附件文件的小写字母a-z的字符分布,即出现a-z字符的数量,并输出结果。
同时请输出文件一共包含的字符数量。
注意输出格式,各元素之间用英文逗号(,)分隔。
答案可能包含a-z共26个字符的分布,如果某个字符没有出现,则不显示,输出顺序a-z顺序。
输入输出格式:这是仅给出输出格式样例,不是结果。
输出示例
共999字符,a:11,b:22,c:33,d:44,e:55
附件 程序内如何读取附件?
latex.log |
解题:
f = open("latex.log")
n = 0 #统计总字符数,初始值为0
d = {} #字典类型,统计字母出现次数
for i in range(26): #遍历26个字母
d[chr(ord('a')+i)] = 0 #通过 ASCII 码将数字转换为对应字母
for line in f:
for c in line:
d[c] = d.get(c, 0) + 1
n += 1
print("共{}字符".format(n), end="")
for i in range(26):
if d[chr(ord('a')+i)] != 0:
print(",{}:{}".format(chr(ord('a')+i), d[chr(ord('a')+i)]), end="")
使用 ord('a')+i 配合 range()函数 可以遍历一个连续的字符表。
注意:
代码未显示关闭文件,可以使用 with open
语句自动管理文件资源:
with open("latex.log") as f: #文件操作
代码仅统计小写字母,大写字母会被忽略。如果需要统计大写字母,可以扩展字典初始化部分:
for i in range(26):
d[chr(ord('a')+i)] = 0
d[chr(ord('A')+i)] = 0