Menu
Coddy logo textTech

Lista według kursu

Część sekcji Logika i przepływ programu ścieżki Python w Coddy. Lekcja 44 z 78.

challenge icon

Wyzwanie

Łatwy

Zachowaj wszystko, co napisałeś w poprzednich krokach tego projektu: uruchamiany jest cały plik, więc student_records i add_student muszą nadal się w nim znajdować.

Utwórz funkcję o nazwie list_students_by_course, która przyjmuje jeden argument: course (ciąg znaków). Funkcja powinna:

  1. Przejść przez słownik student_records i znaleźć wszystkich uczniów zapisanych na wskazany kurs course.
  2. Zwrócić listę imion uczniów zapisanych na kurs.
  3. Jeśli żaden uczeń nie jest zapisany na kurs, zwrócić pustą listę.

Dodaj (zastępując poprzedni) poniższy blok kodu na końcu swojego kodu:

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

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Python online