赞
踩
分类:字符串
知识点:
分割字符串 my_str.split('\\')
字符串只保留最后16位字符 my_str[-16:]
列表可以作为队列、栈
添加元素到第一个位置 my_list.insert(0, elem)
增加元素到最后一个位置 my_list.append(elem)
删除第一个 my_list.pop(0)
删除最后一个 my_list.pop()
题目来自【牛客】
-
- import sys
-
- class 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 软件工程小施同学
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。