Menu
CoddyTech

Derse Göre Listele

Coddy'nin Python Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 44 / 78.

challenge icon

Görev

Kolay

Bu projenin önceki adımlarında yazdığın her şeyi koru: dosyanın tamamı çalıştırılır, bu nedenle student_records ve add_student hâlâ orada olmalıdır.

course (dize) olmak üzere tek bir bağımsız değişken alan, list_students_by_course adlı bir işlev oluştur. İşlev şunları yapmalıdır:

  1. student_records sözlüğü üzerinde yineleme yap ve belirtilen course dersine kayıtlı tüm öğrencileri bul.
  2. Derse kayıtlı öğrencilerin adlarının bulunduğu bir liste döndür.
  3. Derse kayıtlı hiç öğrenci yoksa boş bir liste döndür.

Aşağıdaki kod bloğunu kodunun en altına ekle (mevcut bloğun yerine koy):

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

Kendin dene

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

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi