Menu
CoddyTech

Liste par cours

Fait partie de la section Logique et flux du Journey Python de Coddy. Leçon 44 sur 78.

challenge icon

Défi

Facile

Conservez tout ce que vous avez écrit dans les étapes précédentes de ce projet : le fichier entier est exécuté, donc student_records et add_student doivent toujours être présents.

Créez une fonction nommée list_students_by_course qui prend un argument : course (chaîne de caractères). La fonction doit :

  1. Parcourir le dictionnaire student_records et trouver tous les étudiants inscrits au course spécifié.
  2. Renvoyer une liste des noms des étudiants inscrits au cours.
  3. Si aucun étudiant n'est inscrit au cours, renvoyer une liste vide.

Ajoutez (en remplaçant le code existant) le bloc de code suivant en bas de votre code :

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

Essayez vous-même

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

Toutes les leçons de Logique et flux

Entraînez-vous par vous-même : Compilateur Python en ligne