Напишите программу, которая считывает файл с данными об успеваемости абитуриентов. Файл представляет собой набор строк

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

Denis

Конечно, вот программа, которая решает данную задачу:

python
def calculate_averages(file_path):
students_scores = []
subjects_scores = {"subject1": [], "subject2": [], "subject3": []}

with open(file_path, "r") as file:
for line in file:
line = line.strip().split(";")
name = line[0]
scores = line[1:]
scores = [int(score) for score in scores]

students_scores.append({"name": name, "scores": scores})

for i, score in enumerate(scores):
subjects_scores[f"subject{i+1}"].append(score)

with open("averages.txt", "w") as file:
for student_scores in students_scores:
name = student_scores["name"]
scores = student_scores["scores"]
average = sum(scores) / len(scores)
file.write(f"{name}: {average}\n")

subjects_averages = [sum(scores) / len(scores) for scores in subjects_scores.values()]
subjects_averages = [str(round(average, 2)) for average in subjects_averages]
file.write(" ".join(subjects_averages))

file_path = "data.txt" # Введите путь к файлу с данными об успеваемости абитуриентов
calculate_averages(file_path)


Пояснение к коду:

1. Сначала мы создаем пустые списки `students_scores` для хранения оценок абитуриентов и словарь `subjects_scores`, где ключами являются названия предметов, а значениями - списки оценок по этим предметам для всех абитуриентов.

2. Затем мы открываем файл по указанному пути и построчно считываем его содержимое.

3. Для каждой строки файла мы разделяем ее на фамилию абитуриента и оценки по предметам, используя разделитель ";". Затем мы преобразуем оценки из строкового формата в целочисленный формат и добавляем их в соответствующие списки `students_scores` и `subjects_scores`.

4. После чтения всех данных из файла мы открываем новый файл "averages.txt" для записи средних оценок.

5. Для каждого абитуриента мы вычисляем среднюю оценку, записываем ее в новую строку в файле "averages.txt" и переходим к следующему абитуриенту.

6. Затем мы вычисляем средние оценки по каждому предмету, записываем их в список `subjects_averages` и округляем до двух знаков после запятой.

7. Наконец, мы записываем средние оценки по предметам в последней строке файла "averages.txt", разделяя их пробелом.

Пожалуйста, пришлите файл с данными об успеваемости абитуриентов, чтобы я мог запустить программу и создать файл средних оценок в формате "averages.txt".
Знаешь ответ?
Задать вопрос
Привет!
hello