題目:
開發一個簡單錯誤記錄功能小模塊,能夠記錄出錯的代碼所在的文件名稱和行號。
處理:
1、 記錄最多8條錯誤記錄,循環記錄,對相同的錯誤記錄(凈文件名稱和行號完全匹配)只記錄一條,錯誤計數增加;
2、 超過16個字符的文件名稱,只記錄文件的最后有效16個字符;
3、 輸入的文件可能帶路徑,記錄文件名稱不能帶路徑。
輸入描述:
一行或多行字符串。每行包括帶路徑文件名稱,行號,以空格隔開。
輸出描述:
將所有的記錄統計並將結果輸出,格式:文件名 代碼行數 數目,一個空格隔開
思路:
<<分割輸入字符串,得到文件名、錯誤行
<<判斷文件名長度,並將文件名存到queue中
<<定義一個dictionary 存儲文件名錯誤信息次數
<<判斷文件名是否已經被記錄過
代碼:
#!/usr/bin/python # -*- coding: utf-8 -*- import sys import queue q=queue.Queue(maxsize=8) filelist=[] dic={} while True : Input = sys.stdin.readline().strip() if Input=='': break tempList=Input.split('\\') file=tempList[len(tempList)-1] fileName=file.split(' ')[0] line=file.split(' ')[1] if len(fileName)>16: fileName=fileName[-16:] file=fileName+" "+line if file in dic: dic[file]+=1 else: if q.full(): q.get() q.put(file) dic[file]=1 for i in range(8): f1=q.get() print('{0} {1}'.format(f1,dic[f1]))
總結
這道題不難,第一次做借鑒了其他人的方法用的列表存儲了所有的記錄,最后輸出后八個,單純以做題為目的的話沒什么問題,但是實際工程中這樣做的話那肯定是錯的,由於時間的積累,這個記錄會越來越大,之前做上位機的話報警信息都是存在數據庫里,如果在工程上要做這種錯誤記錄方式的話感覺用隊列會更好,所以又嘗試用隊列做了一遍,時間上比列表滿了不少,希望有技術大牛能解釋下!
在此謝過