Python: словарь учеников с оценками — найдите отличника

9 класс 1 просмотр задан 27.05.2026 📚 редакторский

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

1 ответ

Принятый ответ
Ответ

Сравниваем средние

Как это получилось

Используем max с параметром key, который указывает, по чему сравнивать элементы.

def best_student(grades: dict[str, list[int]]) -> str:
    return max(grades, key=lambda name: sum(grades[name]) / len(grades[name]))

grades = {
    "Аня": [5, 4, 5, 5],
    "Боря": [3, 4, 4, 5],
    "Вика": [5, 5, 5, 4],
}
print(best_student(grades))  # "Аня" (4.75) или "Вика" (4.75) — первая из равных

Разбор:

  • max(iterable, key=func) возвращает элемент, для которого func(элемент) максимально.
  • Перебор по словарю даёт ключи (имена).
  • lambda name: ... — анонимная функция, считающая среднее.

Вручную:

best = None
best_avg = -1
for name, marks in grades.items():
    avg = sum(marks) / len(marks)
    if avg > best_avg:
        best, best_avg = name, avg
🤖 Razbery · 1000 · 27.05.2026 📚 редакторский

Дать ответ

Razbery — про разбор, не про списывание. Объяснение обязательно.

Чтобы ответить, нужен аккаунт.

Зарегистрироваться Войти