Python入門習題----小寫字母頻率柱狀圖
阿新 • • 發佈:2018-12-17
【問題描述】
編寫程式從標準輸入中讀入一段英文,統計其中小寫字母出現次數,並以柱狀圖的形式顯示其出現次數。
【輸入形式】
在標準輸入上輸入一段英文文章(可能有一行,也可能有多行),在新的一行的開頭輸入ctrl+z鍵或者Ctr+D鍵表示結束。
【輸出形式】
在螢幕上依次輸出表示每個小寫字母出現次數的柱狀圖(以*字元表示柱狀圖,空白處用空格字元表示,某個小寫字母出現多少次,就顯示多少*字元;柱狀圖的高度以出現最多的字母次數為準),在最後一行依次輸出26個小寫字母。
【樣例輸入】
The computing world has undergone a revolution since the publication of The C Programming Language in 1978.
【樣例輸出】
【樣例說明】
在輸入的英文短文中,小寫字母a出現了6次,所以其上輸出了6個字元"*"。出現次數最多的是字母n,所以柱狀圖的高度為9個字元。字母j沒有出現,所以其上都為空格字元。
參考程式碼:
""" Created on Wed Oct 23 16:08:26 2018 @author: Dina """ d={ 'a':0, 'b':0, 'c':0, 'd':0, 'e':0, 'f':0, 'g':0, 'h':0, 'i':0, 'j':0, 'k':0, 'l':0, 'm':0, 'n':0, 'o':0, 'p':0, 'q':0, 'r':0, 's':0, 't':0, 'u':0, 'v':0, 'w':0, 'x':0, 'y':0, 'z':0 } # --- 把輸入的一段英文儲存在列表 section 中 section =[] flg = 1 while(flg == 1): sentence = input() section.append(sentence) # 一段英文都是以 . 結束的 if sentence.find('.')==len(sentence)-1 : flg=0 #--- 把該段英文裡的小寫字母儲存在 character 中 character ='' for temp in section: for i in range(len(temp)): if temp[i].islower(): character +=temp[i] #--- 把該段英文裡的小寫字母出現的次數儲存在字典 character_dict 中 character_dict={} for i in range(len(character)): if character[i] in character_dict: character_dict[character[i]] += 1 else: character_dict[character[i]] = 1 #--- 對 character_dict 裡的字母進行排序 a = sorted(character_dict.items(),key = lambda x:x[0]) #--- 把字母出現的次數賦值給 字典 d for i in range(len(a)): d[a[i][0]] = a[i][1] #----找出出現次數的最大值 occurCounts_list=[] for v in d.values(): occurCounts_list.append(v) occur_max=max(occurCounts_list) #--- 建立一個26 x occur_max 的二維矩陣,(不必要建立 26 x 26 的矩陣) result_list=[[0] * 26 for i in range(occur_max)] #---每個字元出現了多少次,對應的那一列就有多少個 * for i in range(len(occurCounts_list)): for k in range(occurCounts_list[i]): result_list[k][i] ='*' #------ 用空格代替 result_list 中的 0,且輸出 result_list for i in range(len(result_list)-1,-1,-1): for j in range(len(result_list[i])): if(result_list[i][j]==0): result_list[i][j] = ' ' print(result_list[i][j],end='') print() #---- 列印 26 個字母 for i in d.keys(): print(i,end='')
提交可通過