PSP2.1 | Personal Software Process Stages | 預估耗時(分鐘) | 實際耗時(分鐘) |
Planning | 計劃 | 30 | 40 |
· Estimate | · 估計這個任務須要多少時間 | 600 | 800 |
·Development | 開發 | 400 | 500 |
· Analysis | · 需求分析 (包括學習新技術) | 100 | 120 |
· Design Spec | · 生成設計文檔 | 80 | 60 |
· Design Review | · 設計複審 | 30 | 40 |
· Coding Standard | · 代碼規範 (爲目前的開發制定合適的規範) | 60 | 50 |
· Design | · 具體設計 | 100 | 80 |
· Coding | · 具體編碼 | 150 | 250 |
· Code Review | · 代碼複審 | 30 | 30 |
· Test | · 測試(自我測試,修改代碼,提交修改) | 150 | 250 |
·Reporting | 報告 | 100 | 110 |
· Test Repor | · 測試報告 | 50 | 40 |
· Size Measurement | · 計算工做量 | 30 | 40 |
· Postmortem & Process Improvement Plan | · 過後總結, 並提出過程改進計劃 | 60 | 40 |
· 合計 | 1970 | 2450 |
大概思路以下:首先是採用判斷關鍵字來劃分的方向,語言是用python。拿到用input函數拿到一個字符串,再用字符串的split函數劃分出題目的難度等級以及姓名。電話號碼的提取是用re模塊的正則表達式,其間還處理若是沒有號碼或者號碼不正確的狀況。接着剩下沒處理的能夠拼接起來造成地址,再來就是劃分地址的工做。引入cpca模塊,用transform函數劃分出前三級(實際是用了jieba模塊的切詞,再去cpca庫裏匹配出省市縣),難度一里面的第四級行政區地址上網了一下,發現只有七種類別,直接上關鍵字判斷(其實是用split函數對關鍵字防割),判斷完了以後,天然難度一也結束了。難度二的話除了第四級地址的判斷,再引入了第六級地址的判斷(xx號/弄…)。難度三的話,目前想到除了遍歷之外沒啥法子,而遍歷還須要爬箇中國全部行政區地址文件……git
函數調用圖:
github
時間開銷圖:
正則表達式
輸入:函數
1!毆刪譚,河北承德承15076364360德縣崗子滿族鄉253省道齊家營中心幼兒園.性能
1!權暖,13252438214海南省三亞崖城鎮111鄉道抱古村農場.單元測試
1!濮陽逛,河南省南15694715825陽市方城縣清河鎮010鄉道尚營村委會.學習
1!何擒,上海徐彙區湖13009955601南路街道汾陽路9弄復襄居委社區活動室.測試
2!郟稀,重慶豐13215590422都縣三建鄉石龍門村衛生室.編碼
2!楚渦握,湖北隨州隨縣吳山鎮18883549874唐王街聯宏村委會.
2!夾谷掄枯,甘肅蘭州城關區18795320124皋蘭路街道皋蘭路210號鄭家臺小區.
2!茅參,上海嘉定區13347914736馬陸鎮嘉新公路1157號樊家村1256號樓.
3!黃馬,甘肅省武威98765432105市涼州區東大街街道北觀衆路3號3樓.
3!羊舌線,福建省福州鼓樓區鼓東街13827706785道慶城路慶城社區.
輸出:
{"姓名": "毆刪譚", "手機": "15076364360", "地址": ["河北省", "承德市", "承德縣", "崗子滿族鄉", "253省道齊家營中心幼兒園"]}
{"姓名": "權暖", "手機": "13252438214", "地址": ["海南省", "三亞市", "", "崖城鎮", "111鄉道抱古村農場"]}
{"姓名": "濮陽逛", "手機": "15694715825", "地址": ["河南省", "南陽市", "方城縣", "清河鎮", "010鄉道尚營村委會"]}
{"姓名": "何擒", "手機": "13009955601", "地址": ["上海", "上海市", "徐彙區", "湖南路街道", "汾陽路9弄復襄居委社區活動室"]}
{"姓名": "郟稀", "手機": "13215590422", "地址": ["重慶", "重慶市", "豐都縣", "三建鄉", "", "", "石龍門村衛生室"]}
{"姓名": "楚渦握", "手機": "18883549874", "地址": ["湖北省", "隨州市", "隨縣", "吳山鎮", "唐王街", "", "聯宏村委會"]}
{"姓名": "夾谷掄枯", "手機": "18795320124", "地址": ["甘肅省", "蘭州市", "城關區", "皋蘭路街道", "皋蘭路", "210號", "鄭家臺小區"]}
{"姓名": "茅參", "手機": "13347914736", "地址": ["上海", "上海市", "嘉定區", "馬陸鎮", "嘉新公路", "1157號", "樊家村1256號樓"]}
{"姓名": "黃馬", "手機": "98765432105", "地址": ["甘肅省", "武威市", "涼州區", "東大街街道", "北觀衆路", "3號", "3樓"]}
{"姓名": "羊舌線", "手機": "13827706785", "地址": ["福建省", "福州市", "鼓樓區", "鼓東街道", "慶城路", "", "慶城社區"]}
代碼覆蓋率:
輸入:
2!邰爺金, 遼寧省營口市站前區新華東路10-甲5號中共15384771154八田地街道社區委員會
輸出:
{"姓名": "邰爺金", "手機": "15384771154", "地址": ["遼寧省", "營口市", "站前區", " 遼寧省營口市站前區新華東路10-甲5號中共八田地街道", "", "", "社區委員"]}
分析:對於第四級的七種狀況劃分,就怕會遇到一些這樣的狀況,相關的關鍵字在本級缺失,卻在後面出現,那叫一個措手不及,可又迫不得已,感受是一個極限了(上面的街道是第七級的,原本街道所屬是行政區第四級,但這地址第四級缺失)