@David_138

Как решить задачу на python?

три дня парюсь из-за этой задачи:

Имеется файл с данными по успеваемости абитуриентов. Он представляет из себя набор строк, где в каждой строке записана следующая информация:
Фамилия;Оценка_по_математике;Оценка_по_физике;Оценка_по_русскому_языку
Поля внутри строки разделены точкой с запятой, оценки — целые числа.
Напишите программу, которая считывает исходный файл с подобной структурой и для каждого абитуриента записывает его среднюю оценку по трём предметам на отдельной строке, соответствующей этому абитуриенту, в файл с ответом.
Также вычислите средние баллы по математике, физике и русскому языку по всем абитуриентам и добавьте полученные значения, разделённые пробелом, последней строкой в файл с ответом.
В качестве ответа на задание прикрепите полученный файл со средними оценками по каждому ученику и одной строкой со средними оценками по трём предметам.
Примечание. Для разбиения строки на части по символу ';' можно использовать метод split следующим образом:
print('First;Second-1 Second-2;Third'.split(';'))
# ['First', 'Second-1 Second-2', 'Third']
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

Вот решение:
def ball(bal,suma=0):
for i in bal:
suma+=int(i)
return str(summa/len(bal))
with open('dataset_3363_4.txt','r') as file:
journal=file.read().split()
predmet_bal=[]
with open('out.txt','w') as file:
for i in journal:
bal=i.split('i')[1:]
file.write(ball(bal)+'\n')
predmet_bal.append(bal)
for i,x in enumerate (bal):
res=[bal[i] for _ in predmet_bal]
file.write(ball(res)+'')

а вот код ошибки:
Traceback (most recent call last):
File "\..python\14_Файловый_ввод-вывод3.py", line 6, in
journal=file.read().split()
File "C:\Users\...\AppData\Local\Programs\Python\Python39\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 50: character maps to

не знаю что с этим делать
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Vindicar
> 'charmap' codec can't decode byte

Кодировка открываемого файла же. Проверь, в какой кодировке файл, и укажи в open() параметр encoding с соотвествующим названием.

Питон по умолчанию открывает файлы как utf-8, но у тебя может быть стандартная виндовая windows1251.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы