题解 | 简单错误记录

简单错误记录

https://www.nowcoder.com/practice/2baa6aba39214d6ea91a2e03dff3fbeb

import sys

error_dict = {}		#字典用于保存输入错误;key=文件名和行数,value=出现次数
error_order = []	#统计出现顺序

for line in sys.stdin:	#逐行处理输入
    if not line.strip():	#输入不符合要求,直接开始处理下一行
        continue
    parts = line.strip().rsplit(' ', 1) 	#将输入内容分割成路径和行号
    path = parts[0]
    line_num = parts[1]

    filename = path.split('\\')[-1]		#将路径分割,提取最后一哥部分文件名保存

    if len(filename) > 16:		#文件名大于16的只保存后16位
        filename = filename[-16:]

    key = (filename, line_num)

    if key not in error_dict:	#如果文件名未被保存在字典的key中
        error_dict[key] = 1		#字典这个文件名的值设置为1
        error_order.append(key)		#字典添加这个key
    else:
        error_dict[key] += 1	#如果文件名已被保存在字典的key中,直接这个key的value加一

for key in error_order[-8:]:	#输出最后八个保存的
    print(f"{key[0]} {key[1]} {error_dict[key]}")	#使用正则输出

思路在代码注释里面!!!

注意:

1.第九行line.strip()是删除前后多余的空格和换行符;.rsplit(' ', 1)是以空格分割,rsplit是从右往前分割,1表示最多分割一次

2.第十三行中是\\是因为python中\是转译符号,而\\才表示一个真正的\符号,意思是你输入的是\进去,但是在它保存的时候它其实保存的是一个\\(程序内部)

全部评论

相关推荐

点赞 评论 收藏
分享
求求给个offer我...:笑死了,笑完过了几分钟感觉挺可悲的
点赞 评论 收藏
分享
谁知道呢_:bro不如吃顿疯狂星期四
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务