1. 程式人生 > 其它 >試題 演算法提高 統計單詞數

試題 演算法提高 統計單詞數

技術標籤:python字典

試題 演算法提高 統計單詞數


問題描述
  統計輸入英文文章段落中不同單詞(單詞有大小寫之分,  但統計時忽略大小寫)各自出現的次數。 輸入段落中所含單詞的總數不超過100,最長單詞的長度不超過20個字母.
輸入格式
  一個包含若干句子的段落, 每個句子由若干英文單片語成. 除空格,  逗號和句號外, 這些輸入的句子中不含其他非字母字元, 並且, 逗號和句號緊跟在它前面的英文單詞後面, 中間沒有空格. 段落最後一個字元是回車符,  表示輸入結束.
輸出格式
  若段落中共有M個不同的英文單詞,則按照其在段落中出現的先後順序輸出M行,各行的格式為:  單詞中所有字母均用大寫形式輸出(最長的單詞頂格輸出,它前面沒有多餘的空格;  其餘單詞與其右對齊)+冒號+N個*號+該單詞在段落中的出現次數N

樣例輸入
This is a test. This test is easy. This is a test. This test is easy.

樣例輸出

THIS:****4
IS:****4
A:**2
TEST:****4
EASY:**2

思路:
本題就是統計單詞數,題中說不需要統計逗號和冒號,那我們只需要把他替換了就好了,然後在用字典統計詞語,上面的輸出要求是(最長的單詞頂格輸出,它前面沒有多餘的空格;  其餘單詞與其右對齊)+冒號+N個*號+該單詞在段落中的出現次數N,所有我們先找出最長的那個單詞,然後在用format語句來完成上面的輸出要求。
程式:

a=input()
a=
a.replace(".","") a=a.replace(",","")#去逗號及句號 a=a.split(" ")#分詞 d={} for i in a: i=i.upper() d[i]=d.get(i,0)+1 #統計單詞數 b=0 for i in d: c=len(i) if c>b: b=c #找到最長的單詞 for i in d: print("{:>{:}}{:}".format(i,b,":"
+d[i]*"*"+str(d[i]))) #輸出單詞及向右對齊b長度然後輸出d[i]的*號和出現的次數

禁止轉載。僅用於自己學習。對程式錯誤不負責。