題目位址
- 點選跳轉
題目描述
開發一個簡單錯誤記錄功能小子產品,能夠記錄出錯的代碼所在的檔案名稱和行号。
處理:
1、 記錄最多8條錯誤記錄,循環記錄,最後隻用輸出最後出現的八條錯誤記錄。對相同的錯誤記錄隻記錄一條,但是錯誤計數增加。最後一個斜杠後面的帶字尾名的部分(保留最後16位)和行号完全比對的記錄才做算是”相同“的錯誤記錄。
2、 超過16個字元的檔案名稱,隻記錄檔案的最後有效16個字元;
3、 輸入的檔案可能帶路徑,記錄檔案名稱不能帶路徑。
4、循環記錄時,隻以第一次出現的順序為準,後面重複的不會更新它的出現時間,仍以第一次為準
輸入描述:
每組隻包含一個測試用例。一個測試用例包含一行或多行字元串。每行包括帶路徑檔案名稱,行号,以空格隔開。
輸出描述:
将所有的記錄統計并将結果輸出,格式:檔案名 代碼行數 數目,一個空格隔開,如:
示例1
輸入
D:\zwtymj\xccb\ljj\cqzlyaszjvlsjmkwoqijggmybr 645
E:\je\rzuwnjvnuz 633
C:\km\tgjwpb\gy\atl 637
F:\weioj\hadd\connsh\rwyfvzsopsuiqjnr 647
E:\ns\mfwj\wqkoki\eez 648
D:\cfmwafhhgeyawnool 649
E:\czt\opwip\osnll\c 637
G:\nt\f 633
F:\fop\ywzqaop 631
F:\yay\jc\ywzqaop 631
輸出
rzuwnjvnuz 633 1
atl 637 1
rwyfvzsopsuiqjnr 647 1
eez 648 1
fmwafhhgeyawnool 649 1
c 637 1
f 633 1
ywzqaop 631 2
解題思路
循環接收所有輸入内容,接收參數時順便将資料簡單處理一下:
1、從最後一個斜杠開始,取 16 位(或直到結尾)
2、記錄行數
然後将日志按照
檔案名
分組,統計出現頻次。
取最後 8 個元素輸出。
代碼
- Python 3
inputs = []
inputs_with_lines = []
while True:
try:
it = input().split()
inputs.append(it)
path = it[0].split('\\')[-1][-16:]
inputs_with_lines.append("{} {}".format(path, it[1]))
except:
break
logs = []
for e in inputs_with_lines:
log = "{} {}".format(e, inputs_with_lines.count(e))
if log in logs:
continue
logs.append(log)
logs = logs[-8:]
for log in logs:
print(log)