Найти - Пользователи
Полная версия: python 3, вывод средней оценки из файла
Начало » Центр помощи » python 3, вывод средней оценки из файла
1
burrunduk
Имеется файл с данными по успеваемости абитуриентов. Он представляет из себя набор строк, где в каждой строке записана следующая информация:

Фамилия;Оценка_по_математике;Оценка_по_физике;Оценка_по_русскому_языку

Поля внутри строки разделены точкой с запятой, оценки — целые числа.

Напишите программу, которая считывает файл с подобной структурой и для каждого абитуриента выводит его среднюю оценку по этим трём предметам на отдельной строке, соответствующей этому абитуриенту.

Также в конце файла, на отдельной строке, через пробел запишите средние баллы по математике, физике и русскому языку по всем абитуриентам:

Примечание. Для разбиения строки на части по символу ‘;’ можно использовать метод 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
botinag
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)
burrunduk
botinag, спасибо, работает)
Beton
botinag
Подскажите, не получается в подобном коде корректно получить данные из исходного файла, выдает ошибку. Задача эта же, операционка Win 8. Проблема возникает при сдачи задания на учебной платформе. В своем интерпретаторе все OK.


botinag
Beton, покажите ошибку.
pyuser
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()
Beton
botinag
Beton, покажите ошибку.
botinag, у меня проблема (наверное) в чтении данных из файла, при чем только в учебной платформе. На стационарном компе прекрасно работает все.
Чтение идет вот так:
with open('D://1.txt') as f:
Добавлялось :
import os
os.path.join('.', 'D', '1.txt)

Я что-то явно не догоняю со вводом выводом, не понимаю что писать. Ошибка тоже никак не описывается.
У меня даже а+b не получается вывести в задачке “Выведите сумму двух элементов, которые нужно взять из файла”.
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