華為機試題-簡單錯誤記錄python 實現


題目:

開發一個簡單錯誤記錄功能小模塊,能夠記錄出錯的代碼所在的文件名稱和行號。

 

處理: 

 

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]))

總結

這道題不難,第一次做借鑒了其他人的方法用的列表存儲了所有的記錄,最后輸出后八個,單純以做題為目的的話沒什么問題,但是實際工程中這樣做的話那肯定是錯的,由於時間的積累,這個記錄會越來越大,之前做上位機的話報警信息都是存在數據庫里,如果在工程上要做這種錯誤記錄方式的話感覺用隊列會更好,所以又嘗試用隊列做了一遍,時間上比列表滿了不少,希望有技術大牛能解釋下!

在此謝過


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM