華為2016校園招聘上機筆試題:簡單錯誤記錄 [python]
阿新 • • 發佈:2019-01-28
'''
[程式設計題] 簡單錯誤記錄
時間限制:1秒
空間限制:65536K
開發一個簡單錯誤記錄功能小模組,能夠記錄出錯的程式碼所在的檔名稱和行號。
處理:
1.記錄最多8條錯誤記錄,對相同的錯誤記錄(即檔名稱和行號完全匹配)只記錄一條,錯誤計數增加;(檔案所在的目錄不同,檔名和行號相同也要合併)
2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元;(如果檔名不同,而只是檔名的後16個字元和行號相同,也不要合併)
3.輸入的檔案可能帶路徑,記錄檔名稱不能帶路徑
輸入描述:
一行或多行字串。每行包括帶路徑檔名稱,行號,以空格隔開。
檔案路徑為windows格式
如:E:\V1R2\product\fpgadrive.c 1325
輸出描述:
將所有的記錄統計並將結果輸出,格式:檔名程式碼行數數目,一個空格隔開,如: fpgadrive.c 1325 1
結果根據數目從多到少排序,數目相同的情況下,按照輸入第一次出現順序排序。
如果超過8條記錄,則只輸出前8條記錄.
如果檔名的長度超過16個字元,則只輸出後16個字元
輸入例子1:
E:\V1R2\product\fpgadrive.c 1325
輸出例子1:
fpgadrive.c 1325 1
'''
'''
解題思路:有序字典
運用好collection中的OrderedDict和sorted函式,這道題目還是容易做出來的
'''
'''
程式碼執行結果:
答案正確:恭喜!您提交的程式通過了所有的測試用例
'''
[程式設計題] 簡單錯誤記錄
時間限制:1秒
空間限制:65536K
開發一個簡單錯誤記錄功能小模組,能夠記錄出錯的程式碼所在的檔名稱和行號。
處理:
1.記錄最多8條錯誤記錄,對相同的錯誤記錄(即檔名稱和行號完全匹配)只記錄一條,錯誤計數增加;(檔案所在的目錄不同,檔名和行號相同也要合併)
2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元;(如果檔名不同,而只是檔名的後16個字元和行號相同,也不要合併)
3.輸入的檔案可能帶路徑,記錄檔名稱不能帶路徑
輸入描述:
一行或多行字串。每行包括帶路徑檔名稱,行號,以空格隔開。
檔案路徑為windows格式
如:E:\V1R2\product\fpgadrive.c 1325
輸出描述:
將所有的記錄統計並將結果輸出,格式:檔名程式碼行數數目,一個空格隔開,如: fpgadrive.c 1325 1
結果根據數目從多到少排序,數目相同的情況下,按照輸入第一次出現順序排序。
如果超過8條記錄,則只輸出前8條記錄.
如果檔名的長度超過16個字元,則只輸出後16個字元
輸入例子1:
E:\V1R2\product\fpgadrive.c 1325
輸出例子1:
fpgadrive.c 1325 1
'''
'''
解題思路:有序字典
運用好collection中的OrderedDict和sorted函式,這道題目還是容易做出來的
'''
'''
程式碼執行結果:
答案正確:恭喜!您提交的程式通過了所有的測試用例
'''
import collections error_dict = collections.OrderedDict() while True: try: filename_row = input().split() filename = filename_row[0][filename_row[0].rfind('\\')+1:] row = filename_row[1] if (filename, row) in error_dict: error_dict[(filename, row)] += 1 else: error_dict[(filename, row)] = 1 except: break error_dict = error_dict.items() sort_dict = sorted(error_dict, key=lambda x: x[1], reverse=True) error_count = 0 for each in sort_dict: error_count += 1 if error_count <= 8: name = each[0][0] if len(name)>16: name = name[-16:] row = each[0][1] count = each[1] print(' '.join([name, str(row), str(count)])) else: break