面试题-Python-002

1、 给出一个数组,如[7864,284,347,7732,8498],现在需要将数组中的数字拼接起来,如按顺序依次拼接为:786428434777328498,数组中的数字拼接顺序可以任意,编写程序,返回[最大的可能拼出的数字]。(以上面数组为例,返回:8498786477323472284)

import time
startT = time.clock()

listA = [7864, 284, 347, 7732, 8498]
strB = ''
for i in range(len(listA)):
    for j in range(len(listA)-1):
        if listA[j] < listA[j+1]:
            listA[j], listA[j+1] = listA[j+1], listA[j]
for i in listA:
    strB = strB + str(i)
print(strB)

endT = time.clock()
print('耗时:{}'.format(endT - startT)) 

解析:1)实现倒序排序。
   2)字符串拼接。

拓展:除了冒泡排序,试试换个排序方法。

2、 有一个文件,文件中每一行为一个 HTTP 请求响应的 log ,每行的 log 格式为:[HTTP URL] [请求响应码,如 200,404] [请求响应时间,以 ms 为单位]
  例如‘http://www.baidu.com 200 345’。求一下所有响应码为 200 的请求的响应时间平均值,单位 ms。

fpath = '*请改为log文件的绝对路径*'
irow = 0
ftime = 0
i = -1
with open(fpath, 'r') as f:
    for l in f.readlines():
        if l[:4] != 'http':
            continue
        i = l.find(' 200 ')
        if i > -1:
            irow += 1
            ftime += int(l[i+4:])
print('状态为200的记录总共 {} 行,总耗时 {} ms,平均耗时 {:.4f} ms。'.format(irow, ftime, ftime / irow))

解析:1)按行读取记录。
   2)为了避免空行,只考虑http开头的行记录。
   3)因为url中通常不会有空行,而毫秒列后直接是换行符。所以这里取巧直接在 响应码200前后加上分隔字符 作为需要查询的字符串。虽然log文件中,我是用tab键做分隔,但这里查询时用空格也能匹配成功(我的环境上,tab总是被转换成空格,不知道是操作系统的原因,还是编辑器的原因)。但不保证windows系统下这样处理也能成功。
   4)响应码是200时,行计数器加1,时间计数器累加。

猜你喜欢

转载自www.cnblogs.com/yjys/p/10738312.html
今日推荐