03-07 编程算法题-2

2、
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:
1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计
数增加;(文件所在的目录不同,文件名和行号相同也要合并)

2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文
件名的后16个字符和行号相同,也不要合并)

3.输入的文件可能带路径,记录文件名称不能带路径

解析:(毫无思路–学习别人的)

准备:
1、sys.stdin.write()与print()

python中调用print() 函数(print将需要的内容/对象打印到控制台上,然后追
加一个换行符)时实际上就是调用了sys.stdin.write('obj'+'\n'),

以下两行代码等价相同:

sys.stdin.write(‘hello’+'\n')
print('hello')

2、sys.stdin.readline() 与input

sys.stdin.readline()会将标准输入全部获取,包括末尾的'\n',因此len计算长度时

换行符'\n'也计算了,但是input() 输入返回的结果不包括'\n'的。

因此平时使用sys.stdin.readline() 时,需要去除'\n',

sys.stdin.readline()        #一次只读一行 
sys.stdin.readline().strip('\n') 

sys.stdin.readline()[:-1]


import sys
import collections              #对集合相关的操作模块

lst = []
dct = collections.OrderedDict()  #有序字典包
            
          						#循环读取输入,将输入的出现次数计入有序字典里面
for line in sys.stdin:          #遍历读取每一行,包括'\n'
    ele = line.split('\\')[-1].strip('\n')
    if ele not in lst:
        lst.append(ele)
    if ele in dct:
        dct[ele] = dct[ele] + 1
    else:
        dct[ele] = 1

#对字典按照出现次数(value)排序
lstTuple = sorted(dct.items(), key = lambda d:d[1], reverse = True)
#输出不超过8行的结果
count = 0
for key in lstTuple:
    if count > 7:
        break
    count = count + 1
    #文件名取后16位
    if len(key[0].split(' ')[0]) > 16:
        print key[0].split(' ')[0][-16:], key[0].split(' ')[1], key[1]
    else:
        print key[0].split(' ')[0], key[0].split(' ')[1], key[1]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值