本文主要是介绍华为机考入门python3--(19)牛客19- 简单错误记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
分类:字符串
知识点:
-
分割字符串 my_str.split('\\')
-
字符串只保留最后16位字符 my_str[-16:]
-
列表可以作为队列、栈
添加元素到第一个位置 my_list.insert(0, elem)
增加元素到最后一个位置 my_list.append(elem)
删除第一个 my_list.pop(0)
删除最后一个 my_list.pop()
题目来自【牛客】
import sysclass ErrorLogger: def __init__(self): self.records = [] # 用于存储错误记录 self.ignore = [] # 排除的记录def log_error(self, filename, line_number): # 去除文件名中的路径,只保留文件名 filename = filename.split('\\')[-1] # 如果文件名超过16个字符,只保留最后16个字符 if len(filename) > 16: filename = filename[-16:]if (filename + "_" + line_number) in self.ignore:return# 检查是否已经记录过相同的错误 for index, record in enumerate(self.records):if record['filename'][-16:] == filename and record['line_number'] == line_number:self.records[index]['count'] += 1 return # 如果没有记录过相同的错误,添加新的记录 self.records.append({'filename': filename, 'line_number': line_number, 'count': 1}) # 保持记录列表最多8条记录 if len(self.records) > 8: # print(self.records)deleted_record = self.records.pop(0) # 移除最早的记录 self.ignore.append(deleted_record['filename'] + "_" + deleted_record['line_number'])def print_records(self): # print(self.records)for record in self.records: print(f"{record['filename']} {record['line_number']} {record['count']}")if __name__ == "__main__": # 创建ErrorLogger实例 logger = ErrorLogger() # 输入错误信息,每行一个错误信息,包括带路径的文件名和行号,以空格隔开 for line in sys.stdin: error_msg = line.split('\n')[0]filename, line_number = error_msg.split(' ') # 分割文件名和行号 logger.log_error(filename, line_number) # 记录错误信息 logger.print_records() # 打印最新的8条错误记录
by 软件工程小施同学
这篇关于华为机考入门python3--(19)牛客19- 简单错误记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!