描述
統計附件文件的小寫字母a-z的字符分布,即出現a-z字符的數量,並輸出結果。
同時請輸出文件一共包含的字符數量。
注意輸出格式,各元素之間用英文逗號(,)分隔。
答案可能包含a-z共26個字符的分布,如果某個字符沒有出現,則不顯示,輸出順序a-z順序。
輸入輸出示例
僅格式示例,非最終答案。
輸入 | 輸出 | |
示例 1 | |
fo = open("latex.log","r") #打開文件 t =0 lt = {} #創建字典 for item in fo: #遍歷fo for j in item: #統計字符數量 t+=1 if j>='a'and j<='z': lt[j] = lt.get(j,0)+1#用當前字符j索引字典,若在,次數+1;若不在,加到字典中,賦給當前值為0,+1 items = list(lt.items())#字典轉換為列表 print("共{}字符".format(t),end = '')#不換行 items.sort(key=lambda x:x[0],reverse = False)#按第一維[0],以默認的從小到大方式排序,reverse = false 不反轉 for item in items: print(",{}:{}".format(item[0],item[1]),end = '')
其中涉及的知識點
1,.get(<元素>,0) 以 lt.get ( j,0 ) +1為例
對字典lt 索引其中的 j 元素對應的值。
1)若字典lt為空,此時函數的作用為檢測並生成新元素,同時對新元素初始化為0,由於遇見了新元素,返回值+1
2)若字典lt不為空,當檢測出新元素時遵從1),當再次遇見相同元素時,返回值+1
2,.sort(key=lambda x:x[0],reverse = False)
1)sort() 默認從小到大方式排序
2)key=lambda x:x[0]
x:x[ ]字母可隨意修改,排序方式按括號中[ ]里面的維度進行排序
[0]按第一維,[2]按第三維
3)reverse()函數
列表類型操作函數,其結果是直接改變列表本身(節省空間),直接把原來的list改為反轉后的列表,返回值為空(None),因此直接引用逆序輸出
reverse = false 以默認的方式排序,不反轉;reverse = true 反轉
#參考答案
f = open("latex.log") cc = 0 d = {} for i in range(26): d[chr(ord('a')+i)] = 0 for line in f: for c in line: d[c] = d.get(c, 0) + 1 cc += 1 print("共{}字符".format(cc), 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()函數 可以遍歷一個連續的字符表。