Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 26, 2014 16:48:09

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Средний рост учащегося. Python 3

Python3Gates
А в вашей программе как-нибудь можно сделать файловый вывод?
with open("file.tsv", "r") as f, open('out.txt', 'w') as o:
    a = {str(i): [] for i in range(1, 12)}
    [a[i[0]].append(int(i[2])) for i in map(lambda x: x.split('\t'), f.read().split('\n')) if i[0]]
    o.write('\n'.join([' '.join((i, str(sum(a[i])/len(a[i]) if len(a[i]) > 0 else '-' ))) for i in map(str, range(1, 12))]))



————————————————
-*- Simple is better than complex -*-

Офлайн

#2 Дек. 26, 2014 16:49:42

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Средний рост учащегося. Python 3

Python3Gates
вот мой вариант
Traceback (most recent call last):
File "test.py", line 16, in <module>
value = [i + 1, ' ', t[i] / t2[i], '\n']
ZeroDivisionError: integer division or modulo by zero



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Дек. 26, 2014 17:31:29

Python3Gates
Зарегистрирован: 2014-12-01
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Средний рост учащегося. Python 3

terabayt, спасибо.

А ещё вам передали :
— Слишком много инлайна, конструкции перегруженные.
— Присутствие range с magic numbers и обращение к элементам списка по индексу — повод задуматься.
— Код написан не по pep8.

Отредактировано Python3Gates (Дек. 27, 2014 06:09:01)

Офлайн

#4 Май 22, 2020 11:42:10

mechmedved
Зарегистрирован: 2020-05-22
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Средний рост учащегося. Python 3

То же решение но читаемо

 with open("myfile.txt") as file:
    students = {str(i): [] for i in range(1, 12)}
    for line in file:
        line = line.strip().split('\t')
        person = line[2]
        key = line[0]
        if key in students:
            students.get(key).append(person)
    for key in students:
        sum = 0
        size = len(students.get(key))
        if len(students.get(key)) > 0:
            for elem in students.get(key):
                sum += int(elem)
            print(key,round(sum / size, 5))
        else:
            print(key, '-')

Отредактировано mechmedved (Май 22, 2020 11:43:46)

Офлайн

#5 Май 24, 2020 12:42:46

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Средний рост учащегося. Python 3

mechmedved
не прошло и 6 лет

Python3Gates
Отредактировано Python3Gates (Дек. 27, 2014 06:09:01)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version