Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 9, 2013 17:58:55

Grinader
Зарегистрирован: 2013-10-05
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачкой!)

Доброго времени суток!

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

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

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

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

Надеюсь на Вашу поддержку и заранее благодарен всем кому нелень повозится с этим!)

Офлайн

#2 Окт. 9, 2013 19:27:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите с задачкой!)

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



Офлайн

#3 Окт. 9, 2013 19:31:20

Grinader
Зарегистрирован: 2013-10-05
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачкой!)

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

конечно хочу учится просто пока напряжненько понимаю) извените за навязчивость.

Офлайн

#4 Окт. 9, 2013 19:53:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите с задачкой!)

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



Офлайн

#5 Окт. 10, 2013 01:52:33

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Помогите с задачкой!)

Хотел сделать красиво, но зашёл в пару тупиков и пришлось начудить :(

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

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

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)

Офлайн

#6 Окт. 10, 2013 04:28:15

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Помогите с задачкой!)

Budulianin
если правильно понимать уровень знаний топикстартера ,и вероятнее всего что эту задачу сдавать преподу, то вспоминается цитата с баша, в которой парень делал прогу девушке на паскале/делфи и там такой фрагмент:
# в этом месте дать преподавателю карвалол
mov aex, bex
и тп десяток строчек на асемблере



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Окт. 10, 2013 13:02:50

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Помогите с задачкой!)

Grinader
Доброго времени суток!Вообщем задача в следующем:10:09:55.10:09:55. 10:09:55. 10:09:56.10:09:57.10:09:57.Такая информация храница в файле .txt, это небольшой отрезок ее. Подобных строк может быть очень много. Вот что нужно сделать:1) Вывести минимальное количество записей в секунду;2) Вывести среднее количество записей в 30 секунд;3) Вывести Максимальное количество записей в минуту.Надеюсь на Вашу поддержку и заранее благодарен всем кому нелень повозится с этим!)
попробуй разбить задания на подзадания и найти ответ на каждое с них в книжке или гугле.

Офлайн

#8 Окт. 14, 2013 11:32:12

Grinader
Зарегистрирован: 2013-10-05
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачкой!)

Budulianin
Хотел сделать красиво, но зашёл в пару тупиков и пришлось начудить Но работает правильноВсё проще оказалосьUPD:
Спасибо за ответ) как то и не рассчитывал если честно)

Офлайн

#9 Окт. 14, 2013 12:03:12

Grinader
Зарегистрирован: 2013-10-05
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачкой!)

Но я тут воспользовавшись вашим ответом и дописав сам немного тоже к чему то пришол. Вот надеюсь что вы мне дадите еще 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)

Прикреплённый файлы:
attachment 80job.py (5,6 KБ)

Офлайн

#10 Окт. 14, 2013 12:20:53

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Помогите с задачкой!)

>>>Вот надеюсь что вы мне дадите еще 1 пинок в правельном направлении
Если не будете оформлять код в теги

[code python][/code]
то вполне могу дать пинок в правИльном направлении



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version