Код сортировкой выбором
помогите пожалуйста В олимпиаде приняло участие несколько учеников 9-го, 10-го и 11-го классов. Найдите и выведите средние баллы участников для каждого класса. упрощённый код на уровне 2 курса сортировка выбором
def selection_sort(arr):
# Сортировка выбором
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i + 1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
def calculate_average_scores(students):
# Словарь для хранения баллов по классам
class_scores = {9: [], 10: [], 11: []}
# Распределяем баллы по классам
for grade, score in students:
if grade in class_scores:
class_scores[grade].append(score)
# Сортируем баллы в каждом классе и вычисляем среднее
averages = {}
for grade in class_scores:
scores = class_scores[grade]
if scores: # Проверяем, что есть участники из этого класса
selection_sort(scores)
average = sum(scores) / len(scores)
averages[grade] = average
else:
averages[grade] = 0.0 # Если нет участников, средний балл 0
return averages
# Пример данных: список кортежей (класс, балл)
students_data = [
(9, 85),
(10, 90),
(9, 78),
(11, 92),
(10, 88),
(11, 95),
(10, 82),
(9, 91),
(11, 89),
]
# Вычисляем средние баллы
average_scores = calculate_average_scores(students_data)
# Выводим результаты
for grade in sorted(average_scores):
print(f"Средний балл {grade}-го класса: {average_scores[grade]:.2f}")