Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2014 12:16:40

burrunduk
Зарегистрирован: 2014-11-25
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, вывод средней оценки из файла

Имеется файл с данными по успеваемости абитуриентов. Он представляет из себя набор строк, где в каждой строке записана следующая информация:

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

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

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

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

Примечание. Для разбиения строки на части по символу ‘;’ можно использовать метод 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

Офлайн

#2 Ноя. 27, 2014 14:02:06

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

python 3, вывод средней оценки из файла

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)

Офлайн

#3 Ноя. 27, 2014 14:33:24

burrunduk
Зарегистрирован: 2014-11-25
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, вывод средней оценки из файла

botinag, спасибо, работает)

Офлайн

#4 Дек. 27, 2015 20:40:00

Beton
Зарегистрирован: 2015-09-24
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, вывод средней оценки из файла

botinag
Подскажите, не получается в подобном коде корректно получить данные из исходного файла, выдает ошибку. Задача эта же, операционка Win 8. Проблема возникает при сдачи задания на учебной платформе. В своем интерпретаторе все OK.


Отредактировано Beton (Дек. 27, 2015 21:16:54)

Офлайн

#5 Дек. 27, 2015 23:36:01

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

python 3, вывод средней оценки из файла

Beton, покажите ошибку.

Офлайн

#6 Дек. 28, 2015 02:43:50

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

python 3, вывод средней оценки из файла

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()



Офлайн

#7 Дек. 28, 2015 11:13:26

Beton
Зарегистрирован: 2015-09-24
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3, вывод средней оценки из файла

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

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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version