用戶需求:git
1.程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。github
2.程序須要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。框架
3.指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。學習
4.高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。測試
5.統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。
編碼
基本功能:spa
1.讀入讀出文件功能(將文件進行讀取,存放)
2.用戶輸入功能(用戶輸入想要查詢的單詞,以及查詢高頻單詞的個數)
3.詞頻統計功能
4.排序功能(降序排序和按字典順序排序)
5.顯示功能(顯示柱狀圖,顯示前k個高頻單詞的詞頻,顯示指定單詞出現的次數)
備註:由於編碼能力有限,因此只能實現部分功能,沒有按照老師的要求將功能所有實現。
設計
用findall 抽取出[a-z,A-Z]的英文單詞 而後用for循環遍歷統計單詞出現的次數代碼規範
import re #應用re模塊 lines_count = 0 chars_count = 0 words_dict= {} f=open('cyy.txt','r') for line in f: lines_count = lines_count + 1 chars_count = chars_count + len(line) match = re.findall(r'[^a-zA-Z]+', line)#匹配英文單詞 for i in match: line = line.replace(i, ' ') lines_list = line.split() for i in lines_list: if i not in words_dict: words_dict[i] = 1 else: words_dict[i] = words_dict[i] + 1 f.close() for w,n in words_dict.items(): print(w,n)
任務內容 | 計劃共完成須要的時間(min) | 實際完成須要的時間(min) |
計劃 | 10 | 10 |
估計這個任務須要多少時間,並規劃大體工做步驟 | 30 | 20 |
開發 | 200 | 200 |
需求分析 (包括學習新技術) | 10 | 10 |
生成設計文檔 | 20 | 15 |
設計複審 (和同事審覈設計文檔) | 20 | 15 |
代碼規範 (爲目前的開發制定合適的規範) | 20 | 20 |
具體設計 | 30 | 30 |
具體編碼 | 100 | 100 |
代碼複審 | 25 | 25 |
測試(自我測試,修改代碼,提交修改) | 20 | 20 |
報告 | 30 | 30 |
測試報告 | 10 | 10 |
計算工做量 | 5 | 3 |
過後總結 ,並提出過程改進計劃 | 6 | 4 |
從 PSP表中能夠看出,我全部的階段付出的時間都比別人多好多多是由於第一次,缺少經驗,在每個階段我都在搜索,概括,總結,因此付出的時間相對來講就比別人多好多,不過經過作此次表格,讓我瞭解了作一個項目所要經歷的階段,都要作什麼,雖然細節仍是不懂,可是大概框架仍是知道了,因此在從此的學習中,我會加倍努力,彌補本身的不足。code