Menu
Coddy logo textTech

Beste Studenten

Teil des Abschnitts Logic & Flow der Python-Journey von Coddy — Lektion 45 von 78.

challenge icon

Aufgabe

Einfach

Erstellen Sie eine Funktion namens filter_top_students, die ein Argument entgegennimmt: threshold (float). Die Funktion sollte:

  1. Iterieren Sie durch das student_records Dictionary und finden Sie alle Schüler, deren Durchschnittsnote höher als der angegebene threshold ist.
  2. Verwenden Sie die Funktion calculate_average_grade, um die Durchschnittsnote jedes Schülers zu erhalten.
  3. Geben Sie eine Liste der Namen der besten Schüler zurück.
  4. Wenn keine Schüler die Kriterien erfüllen, geben Sie eine leere Liste zurück.

Fügen Sie den folgenden Codeblock am Ende Ihres Codes hinzu (bzw. ersetzen Sie ihn):

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))  # Sollte ["Alice", "Diana"] zurückgeben
print(filter_top_students(90))  # Sollte ["Diana"] zurückgeben
print(filter_top_students(100))  # Sollte eine leere Liste zurückgeben

Nehmen Sie sich einen Moment Zeit, um darüber nachzudenken, wie Sie Dictionaries, Sets und Entscheidungslogik kombiniert haben, um ein voll funktionsfähiges Programm zu erstellen. Gute Arbeit! 🚀

Probier es selbst

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

Alle Lektionen in Logic & Flow