Найти - Пользователи
Полная версия: Помогите с задачкой!)
Начало » Центр помощи » Помогите с задачкой!)
1 2
Grinader
Доброго времени суток!

Вообщем задача в следующем:

10:09:55.
10:09:55.
10:09:55.
10:09:56.
10:09:57.
10:09:57.

Такая информация храница в файле .txt, это небольшой отрезок ее. Подобных строк может быть очень много. Вот что нужно сделать:

1) Вывести минимальное количество записей в секунду;
2) Вывести среднее количество записей в 30 секунд;
3) Вывести Максимальное количество записей в минуту.

Надеюсь на Вашу поддержку и заранее благодарен всем кому нелень повозится с этим!)
FishHook
Grinader,
Ваш предыдущий пост был примерно такого же содержания - “помогите..задачка..прочитать из файла…вывести”
Блин, один в один!
У Вас ума нет или Вы не хотите учиться?
Grinader
FishHook
Grinader,Ваш предыдущий пост был примерно такого же содержания - “помогите..задачка..прочитать из файла…вывести”Блин, один в один!У Вас ума нет или Вы не хотите учиться?

конечно хочу учится просто пока напряжненько понимаю) извените за навязчивость.
FishHook
Grinader
конечно хочу учится просто пока напряжненько понимаю) извените за навязчивость.
Сама по себе навязчивость не плоха, просто я не понимаю, как Вы собираетесь учиться, если сами ничего не делаете.
Прочитав учебник и предыдущий свой пост у Вас должно было что-то появиться в голове, чтобы самостоятельно сделать хоть какую-то работу. Вы её покажИте и задайте конкретный вопрос, Вам обязательно ответят.
Budulianin
Хотел сделать красиво, но зашёл в пару тупиков и пришлось начудить :(

Но работает правильно

Всё проще оказалось

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)
JOHN_16
Budulianin
если правильно понимать уровень знаний топикстартера ,и вероятнее всего что эту задачу сдавать преподу, то вспоминается цитата с баша, в которой парень делал прогу девушке на паскале/делфи и там такой фрагмент:
# в этом месте дать преподавателю карвалол
mov aex, bex
и тп десяток строчек на асемблере
Singularity
Grinader
Доброго времени суток!Вообщем задача в следующем:10:09:55.10:09:55. 10:09:55. 10:09:56.10:09:57.10:09:57.Такая информация храница в файле .txt, это небольшой отрезок ее. Подобных строк может быть очень много. Вот что нужно сделать:1) Вывести минимальное количество записей в секунду;2) Вывести среднее количество записей в 30 секунд;3) Вывести Максимальное количество записей в минуту.Надеюсь на Вашу поддержку и заранее благодарен всем кому нелень повозится с этим!)
попробуй разбить задания на подзадания и найти ответ на каждое с них в книжке или гугле.
Grinader
Budulianin
Хотел сделать красиво, но зашёл в пару тупиков и пришлось начудить Но работает правильноВсё проще оказалосьUPD:
Спасибо за ответ) как то и не рассчитывал если честно)
Grinader
Но я тут воспользовавшись вашим ответом и дописав сам немного тоже к чему то пришол. Вот надеюсь что вы мне дадите еще 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
>>>Вот надеюсь что вы мне дадите еще 1 пинок в правельном направлении
Если не будете оформлять код в теги
[code python][/code]
то вполне могу дать пинок в правИльном направлении
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB