Menu
Coddy logo textTech

Лучшие студенты

Часть раздела Logic & Flow путешествия по Python на Coddy — урок 45 из 78.

challenge icon

Задание

Легко

Создайте функцию с именем filter_top_students, которая принимает один аргумент: threshold (float). Функция должна:

  1. Пройти в цикле по словарю student_records и найти всех студентов, чей средний балл выше указанного порога threshold.
  2. Использовать функцию calculate_average_grade для получения среднего балла каждого студента.
  3. Вернуть список имен лучших студентов.
  4. Если ни один студент не соответствует критериям, вернуть пустой список.

Добавьте (замените) следующий блок кода в нижней части вашего кода:

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Math", "Biology"])
add_student("Diana", 23, ["Chemistry", "Physics"])
add_grade("Alice", 90)
add_grade("Alice", 85)
add_grade("Bob", 75)
add_grade("Diana", 95)
print(filter_top_students(80))  # Должно вернуть ["Alice", "Diana"]
print(filter_top_students(90))  # Должно вернуть ["Diana"]
print(filter_top_students(100))  # Должно вернуть пустой список

Найдите минутку, чтобы поразмышлять о том, как вы объединили словари, множества и принятие решений для создания полнофункциональной программы. Отличная работа! 🚀

Попробуйте сами

student_records = {}

def add_student(name, age, courses):
    if name in student_records:
        print(f"Student '{name}' already exists.")
        return
    student_records[name] = {"age": age, "grades": set(), "courses": set(courses)}
    print(f"Student '{name}' added successfully.")

def add_grade(name, grade):
    if name not in student_records:
        print(f"Student '{name}' not found.")
        return
    student_records[name]["grades"].add(grade)
    print(f"Grade {grade} added for student '{name}'.")

def is_enrolled(name, course):
    if name not in student_records:
        print(f"Student '{name}' not found.")
        return False
    return course in student_records[name]["courses"]

def calculate_average_grade(name):
    if name not in student_records:
        print(f"Student '{name}' not found.")
        return None
    grades = student_records[name]["grades"]
    if not grades:
        return 0
    return sum(grades) / len(grades)

def list_students_by_course(course):
    students_in_course = []
    for name, details in student_records.items():
        if course in details["courses"]:
            students_in_course.append(name)
    return students_in_course


add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Math", "Biology"])
add_student("Diana", 23, ["Chemistry", "Physics"])
print(list_students_by_course("Math"))  # Should return ["Alice", "Bob"]
print(list_students_by_course("Physics"))  # Should return ["Alice", "Diana"]
print(list_students_by_course("Biology"))  # Should return ["Bob"]
print(list_students_by_course("History"))  # Should return an empty list

Все уроки раздела Logic & Flow