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,时间计数器累加。