Menu
Coddy logo textTech

Meilleurs étudiants

Fait partie de la section Logic & Flow du Journey Python de Coddy — leçon 45 sur 78.

challenge icon

Défi

Facile

Créez une fonction nommée filter_top_students qui prend un argument : threshold (float). La fonction doit :

  1. Parcourir le dictionnaire student_records et trouver tous les étudiants dont la note moyenne est supérieure au threshold spécifié.
  2. Utiliser la fonction calculate_average_grade pour obtenir la note moyenne de chaque étudiant.
  3. Retourner une liste des noms des meilleurs étudiants.
  4. Si aucun étudiant ne répond aux critères, retourner une liste vide.

Ajoutez (remplacez) le bloc de code suivant au bas de votre code :

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))  # Devrait retourner ["Alice", "Diana"]
print(filter_top_students(90))  # Devrait retourner ["Diana"]
print(filter_top_students(100))  # Devrait retourner une liste vide

Prenez un moment pour réfléchir à la manière dont vous avez combiné les dictionnaires, les ensembles et la prise de décision pour créer un programme entièrement fonctionnel. Bon travail ! 🚀

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)

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

Toutes les leçons de Logic & Flow