Форум сайта python.su
Имеется файл с данными по успеваемости абитуриентов. Он представляет из себя набор строк, где в каждой строке записана следующая информация:
Фамилия;Оценка_по_математике;Оценка_по_физике;Оценка_по_русскому_языку
Поля внутри строки разделены точкой с запятой, оценки — целые числа.
Напишите программу, которая считывает файл с подобной структурой и для каждого абитуриента выводит его среднюю оценку по этим трём предметам на отдельной строке, соответствующей этому абитуриенту.
Также в конце файла, на отдельной строке, через пробел запишите средние баллы по математике, физике и русскому языку по всем абитуриентам:
Примечание. Для разбиения строки на части по символу ‘;’ можно использовать метод split следующим образом:
print('First;Second-1 Second-2;Third'.split(';'))
#
Sample Input:
Петров;85;92;78
Сидоров;100;88;94
Иванов;58;72;85
Sample Output:
85.0
94.0
71.666666667
81.0 84.0 85.666666667
Офлайн
with open('d:/tst.txt') as f: strings = [s.rstrip() for s in f.readlines()] otsenki = [s.split(';')[1:] for s in strings] for x in otsenki: print(sum(map(int, x))/len(x)) sr_mat = sum([int(x[0]) for x in otsenki]) / len(otsenki) sr_fiz = sum([int(x[1]) for x in otsenki]) / len(otsenki) sr_rus = sum([int(x[2]) for x in otsenki]) / len(otsenki) print(sr_mat, sr_fiz, sr_rus)
Офлайн
botinag, спасибо, работает)
Офлайн
botinagПодскажите, не получается в подобном коде корректно получить данные из исходного файла, выдает ошибку. Задача эта же, операционка Win 8. Проблема возникает при сдачи задания на учебной платформе. В своем интерпретаторе все OK.
Отредактировано Beton (Дек. 27, 2015 21:16:54)
Офлайн
Beton, покажите ошибку.
Офлайн
botinag
Очень много лишних приведений типов, ИМХО
Проще выполнить приведение один раз
lines = [] with open(r"c:\tst.txt", "rt", encoding="utf-8") as f: for line in map(str.strip, f): line = tuple(map(int, line.split(";")[1:])) print(sum(line) / len(line)) lines.append(line) count = len(lines) for value in (sum(_) / count for _ in zip(*lines)): print(value, end=" ") print()
Офлайн
botinagbotinag, у меня проблема (наверное) в чтении данных из файла, при чем только в учебной платформе. На стационарном компе прекрасно работает все.
Beton, покажите ошибку.
with open('D://1.txt') as f:
import os os.path.join('.', 'D', '1.txt)
Офлайн