Menu
CoddyTech

Listar por Curso

Parte da seção Lógica e Fluxo do Journey de Python da Coddy. Lição 44 de 78.

challenge icon

Desafio

Fácil

Mantenha tudo o que você escreveu nas etapas anteriores deste projeto: o arquivo inteiro é executado, então student_records e add_student ainda devem estar presentes.

Crie uma função chamada list_students_by_course que receba um argumento: course (string). A função deve:

  1. Iterar pelo dicionário student_records e encontrar todos os alunos matriculados no course especificado.
  2. Retornar uma lista com os nomes dos alunos matriculados no curso.
  3. Se nenhum aluno estiver matriculado no curso, retornar uma lista vazia.

Adicione (substitua pelo) seguinte bloco de código ao final do seu 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

Experimente você mesmo

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 as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de Python online