Форум сайта python.su
Доброго времени суток!
Вообщем задача в следующем:
10:09:55.
10:09:55.
10:09:55.
10:09:56.
10:09:57.
10:09:57.
Такая информация храница в файле .txt, это небольшой отрезок ее. Подобных строк может быть очень много. Вот что нужно сделать:
1) Вывести минимальное количество записей в секунду;
2) Вывести среднее количество записей в 30 секунд;
3) Вывести Максимальное количество записей в минуту.
Надеюсь на Вашу поддержку и заранее благодарен всем кому нелень повозится с этим!)
Офлайн
Grinader,
Ваш предыдущий пост был примерно такого же содержания - “помогите..задачка..прочитать из файла…вывести”
Блин, один в один!
У Вас ума нет или Вы не хотите учиться?
Офлайн
FishHook
Grinader,Ваш предыдущий пост был примерно такого же содержания - “помогите..задачка..прочитать из файла…вывести”Блин, один в один!У Вас ума нет или Вы не хотите учиться?
Офлайн
GrinaderСама по себе навязчивость не плоха, просто я не понимаю, как Вы собираетесь учиться, если сами ничего не делаете.
конечно хочу учится просто пока напряжненько понимаю) извените за навязчивость.
Офлайн
Хотел сделать красиво, но зашёл в пару тупиков и пришлось начудить :(
Но работает правильно
Всё проще оказалось
UPD:
from collections import Counter key_ = lambda x: (int(x[:2]), int(x[3:5]), int(x[-2:])) with open('input.txt') as f_in: all_rec = sorted(map(lambda x: x.strip()[:-1], f_in.readlines()), key=key_) all_rec_sec_i = iter(map(lambda x: x[-2:], all_rec)) group_minutes = Counter(map(lambda x: x[:-3], all_rec)) avg_30sec = sum(group_minutes.values()) / float(len(group_minutes) * 2) max_60sec = group_minutes.most_common(1)[0][1] min_sec = sorted(Counter(all_rec).values())[0] print 'min_sec:{0}, avg_30sec:{1}, max_60sec:{2}'.format(min_sec, avg_30sec, max_60sec)
Отредактировано Budulianin (Окт. 10, 2013 15:49:05)
Офлайн
Budulianin
если правильно понимать уровень знаний топикстартера ,и вероятнее всего что эту задачу сдавать преподу, то вспоминается цитата с баша, в которой парень делал прогу девушке на паскале/делфи и там такой фрагмент:
# в этом месте дать преподавателю карвалол
mov aex, bex
и тп десяток строчек на асемблере
Офлайн
Grinaderпопробуй разбить задания на подзадания и найти ответ на каждое с них в книжке или гугле.
Доброго времени суток!Вообщем задача в следующем:10:09:55.10:09:55. 10:09:55. 10:09:56.10:09:57.10:09:57.Такая информация храница в файле .txt, это небольшой отрезок ее. Подобных строк может быть очень много. Вот что нужно сделать:1) Вывести минимальное количество записей в секунду;2) Вывести среднее количество записей в 30 секунд;3) Вывести Максимальное количество записей в минуту.Надеюсь на Вашу поддержку и заранее благодарен всем кому нелень повозится с этим!)
Офлайн
BudulianinСпасибо за ответ) как то и не рассчитывал если честно)
Хотел сделать красиво, но зашёл в пару тупиков и пришлось начудитьНо работает правильноВсё проще оказалосьUPD:
Офлайн
Но я тут воспользовавшись вашим ответом и дописав сам немного тоже к чему то пришол. Вот надеюсь что вы мне дадите еще 1 пинок в правельном направлении)). Вообщем вот полное задание:
Нужно собрать статистику:
(минимальное\среднее\максимальное) кол-во записей в (секунду\30 секунд\минуту) для:
- всех компонентов суммарно,
- каждого компонента,
- номера каждого компонента,
- типа записи для каждого номера каждого компонента.
для максимальных и минимальных значений указывать промежутки времени, в котором это произошло.
Строчки текста в тхт документе имеют такой вид:
10:09:55.192 ComponentA 0 INFO description
10:09:55.193 ComponentA 0 INFO description
10:09:55.193 ComponentA 0 INFO description
Вот прикрепляю скрипт.
Вопрос: как переделать этот кусок скрипта так что бы можно было вывести в 30 секунд минимум, максимум и среднее? (Дело в том что для секунды и минуты сделать получилось а для 30 сек немогу допереть и все =\)
def seccom(example1): frcount = {} a3=0 a=1 b=1 i=0 pi=[0] for components in componentList: example1=open("d:\exemple.txt") for line in example1: if components in line: pi.append(line) del pi[0] for line in pi: if a==b: curtime = line[0:8] b=2 if (line[6:8] == curtime[6:8]): a3=a3+1 if curtime[6:8] != line[6:8]: frcount[curtime]=a3 a3=1 i=i+1 curtime=line[0:8] frcount[curtime]=a3 avg1secall(pi,components) print ("Maximum per second for {0}".format(components)) print ("{0}{1}{2}".format(max(frcount.iteritems(), key=operator.itemgetter(1))[0], '-',max(frcount.iteritems(), key=operator.itemgetter(1))[1])) print ("Minimum per second for {0}".format(components)) print ("{0}{1}{2}".format(min(frcount.iteritems(), key=operator.itemgetter(1))[0], '-',min(frcount.iteritems(), key=operator.itemgetter(1))[1])) print ("______________________________________________________") example1.close() frcount = {} a3=0 a=1 b=1 i=0 pi=[0]
Отредактировано FishHook (Окт. 14, 2013 12:19:05)
Прикреплённый файлы: 80job.py (5,6 KБ)
Офлайн
>>>Вот надеюсь что вы мне дадите еще 1 пинок в правельном направлении
Если не будете оформлять код в теги
[code python][/code]
Офлайн