Menu
Coddy logo textTech

Najlepsi uczniowie

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

challenge icon

Wyzwanie

Łatwy

Utwórz funkcję o nazwie filter_top_students, która przyjmuje jeden argument: threshold (liczbę zmiennoprzecinkową). Funkcja powinna:

  1. Przejść przez słownik student_records i znaleźć wszystkich uczniów, których średnia ocen jest większa niż podana wartość threshold.
  2. Użyć funkcji calculate_average_grade, aby uzyskać średnią ocen każdego ucznia.
  3. Zwrócić listę imion najlepszych uczniów.
  4. Jeśli żaden uczeń nie spełnia kryteriów, zwrócić pustą listę.

Dodaj (zastąp) 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"])
add_grade("Alice", 90)
add_grade("Alice", 85)
add_grade("Bob", 75)
add_grade("Diana", 95)
print(filter_top_students(80))  # Should return ["Alice", "Diana"]
print(filter_top_students(90))  # Should return ["Diana"]
print(filter_top_students(100))  # Should return an empty list

Poświęć chwilę na zastanowienie się, jak połączyłeś słowniki, zbiory i podejmowanie decyzji, aby stworzyć w pełni funkcjonalny program. Świetna robota! 🚀

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)

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

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Python online