当前位置:   article > 正文

华为机考入门python3--(19)牛客19- 简单错误记录

华为机考入门python3--(19)牛客19- 简单错误记录

分类:字符串

知识点:

  1. 分割字符串    my_str.split('\\')

  2. 字符串只保留最后16位字符      my_str[-16:]

  3. 列表可以作为队列、栈

    添加元素到第一个位置 my_list.insert(0, elem)

    增加元素到最后一个位置 my_list.append(elem)

    删除第一个   my_list.pop(0)

    删除最后一个 my_list.pop()

题目来自【牛客】

图片

  1. import sys
  2. class ErrorLogger:
  3. def __init__(self):
  4. self.records = [] # 用于存储错误记录
  5. self.ignore = [] # 排除的记录
  6. def log_error(self, filename, line_number):
  7. # 去除文件名中的路径,只保留文件名
  8. filename = filename.split('\\')[-1]
  9. # 如果文件名超过16个字符,只保留最后16个字符
  10. if len(filename) > 16:
  11. filename = filename[-16:]
  12. if (filename + "_" + line_number) in self.ignore:
  13. return
  14. # 检查是否已经记录过相同的错误
  15. for index, record in enumerate(self.records):
  16. if record['filename'][-16:] == filename and record['line_number'] == line_number:
  17. self.records[index]['count'] += 1
  18. return
  19. # 如果没有记录过相同的错误,添加新的记录
  20. self.records.append({'filename': filename, 'line_number': line_number, 'count': 1})
  21. # 保持记录列表最多8条记录
  22. if len(self.records) > 8:
  23. # print(self.records)
  24. deleted_record = self.records.pop(0) # 移除最早的记录
  25. self.ignore.append(deleted_record['filename'] + "_" + deleted_record['line_number'])
  26. def print_records(self):
  27. # print(self.records)
  28. for record in self.records:
  29. print(f"{record['filename']} {record['line_number']} {record['count']}")
  30. if __name__ == "__main__":
  31. # 创建ErrorLogger实例
  32. logger = ErrorLogger()
  33. # 输入错误信息,每行一个错误信息,包括带路径的文件名和行号,以空格隔开
  34. for line in sys.stdin:
  35. error_msg = line.split('\n')[0]
  36. filename, line_number = error_msg.split(' ') # 分割文件名和行号
  37. logger.log_error(filename, line_number) # 记录错误信息
  38. logger.print_records() # 打印最新的8条错误记录

 by 软件工程小施同学

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/537000
推荐阅读
相关标签
  

闽ICP备14008679号