Menu
CoddyTech

Siswa Terbaik

Termasuk bagian Logika dan Alur dalam perjalanan Python di Coddy. Pelajaran 45 dari 78.

challenge icon

Tantangan

Mudah

Buat fungsi bernama filter_top_students yang menerima satu argumen: threshold (float). Fungsi ini harus:

  1. Menelusuri dictionary student_records dan menemukan semua siswa yang nilai rata-ratanya lebih besar dari threshold yang ditentukan.
  2. Menggunakan fungsi calculate_average_grade untuk mendapatkan nilai rata-rata setiap siswa.
  3. Mengembalikan list nama siswa dengan nilai tertinggi.
  4. Jika tidak ada siswa yang memenuhi kriteria, kembalikan list kosong.

Tambahkan (ganti) blok kode berikut di bagian bawah kodemu:

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

Luangkan waktu sejenak untuk merenungkan bagaimana kamu telah menggabungkan dictionary, set, dan pengambilan keputusan untuk membuat program yang berfungsi sepenuhnya. Bagus sekali! 🚀

Coba sendiri

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

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Python online