Menu
CoddyTech

Listar por curso

Parte de la sección Lógica y flujo del Journey de Python de Coddy. Lección 44 de 78.

challenge icon

Desafío

Fácil

Conserva todo lo que escribiste en los pasos anteriores de este proyecto: se ejecuta el archivo completo, así que student_records y add_student todavía deben estar ahí.

Crea una función llamada list_students_by_course que acepte un argumento: course (cadena). La función debe:

  1. Recorrer el diccionario student_records y encontrar a todos los estudiantes inscritos en el course especificado.
  2. Devolver una lista con los nombres de los estudiantes que están inscritos en el curso.
  3. Si no hay estudiantes inscritos en el curso, devolver una lista vacía.

Añade (reemplaza) el siguiente bloque de código al final de tu código:

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

Pruébalo tú mismo

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

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de Python online