Menu
CoddyTech

Список по курсам

Часть раздела Логика и управление потоком выполнения путешествия по Python на Coddy. Урок 44 из 78.

challenge icon

Задание

Легко

Сохраните всё, что вы написали на предыдущих этапах этого проекта: запускается весь файл, поэтому student_records и add_student должны по-прежнему присутствовать.

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

  1. Перебрать словарь student_records и найти всех студентов, записанных на указанный курс course.
  2. Вернуть список имён студентов, записанных на этот курс.
  3. Если на курс не записан ни один студент, вернуть пустой список.

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

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

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

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)


add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_grade("Alice", 90)
add_grade("Alice", 85)
add_grade("Bob", 75)
print(calculate_average_grade("Alice"))  # Should return 87.5
print(calculate_average_grade("Bob"))  # Should return 75.0
print(calculate_average_grade("Charlie"))  # Non-existent student, should print message and return None
print(calculate_average_grade("Alice"))  # Should return 87.5 again

Все уроки раздела Логика и управление потоком выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор Python