Найти - Пользователи
Полная версия: Средний рост учащегося. Python 3
Начало » Центр помощи » Средний рост учащегося. Python 3
1 2
terabayt
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))]))
terabayt
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
Python3Gates
terabayt, спасибо.

А ещё вам передали :
— Слишком много инлайна, конструкции перегруженные.
— Присутствие range с magic numbers и обращение к элементам списка по индексу — повод задуматься.
— Код написан не по pep8.
mechmedved
То же решение но читаемо
 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, '-')
marvellik
mechmedved
не прошло и 6 лет
Python3Gates
Отредактировано Python3Gates (Дек. 27, 2014 06:09:01)
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