Top.Mail.Ru
Ответы

Код сортировкой выбором

помогите пожалуйста В олимпиаде приняло участие несколько учеников 9-го, 10-го и 11-го классов. Найдите и выведите средние баллы участников для каждого класса. упрощённый код на уровне 2 курса сортировка выбором

По дате
По рейтингу
Аватар пользователя
Мастер
3нед

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}")