Menu
Coddy logo textTech

Liste par cours

Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 52 sur 56.

Ajoutez une méthode qui trouve chaque étudiant inscrit à un cours donné et retourne leurs noms sous forme de tableau. C'est le genre de chaîne select/map que vous avez déjà pratiquée.

challenge icon

Défi

Facile

Ajoutez une méthode list_by_course(course) qui retourne un tableau des noms des étudiants dont le tableau :courses inclut course. Les noms doivent apparaître dans l'ordre d'insertion ; si personne n'est inscrit, retournez [].

Remplacez le bloc de test par :

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob",   22, ["Biology", "Math"])
add_student("Cara",  19, ["Physics"])
puts list_by_course("Math").inspect
puts list_by_course("Physics").inspect
puts list_by_course("Art").inspect

Résultat attendu :

Student 'Alice' added.
Student 'Bob' added.
Student 'Cara' added.
["Alice", "Bob"]
["Alice", "Cara"]
[]

Essayez vous-même

$student_records = {}

def add_student(name, age, courses)
  if $student_records.key?(name)
    puts "Student '#{name}' already exists."
    return
  end
  $student_records[name] = { age: age, grades: [], courses: courses }
  puts "Student '#{name}' added."
end

def add_grade(name, grade)
  unless $student_records.key?(name)
    puts "Student '#{name}' not found."
    return
  end
  $student_records[name][:grades] << grade
  puts "Grade #{grade} added for '#{name}'."
end

def average_grade(name)
  unless $student_records.key?(name)
    puts "Student '#{name}' not found."
    return nil
  end
  grades = $student_records[name][:grades]
  return 0 if grades.empty?
  grades.sum.to_f / grades.length
end

# TODO: def list_by_course(course), retourner un tableau des noms inscrits au cours `course`

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob",   22, ["Biology", "Math"])
add_student("Cara",  19, ["Physics"])
puts list_by_course("Math").inspect
puts list_by_course("Physics").inspect
puts list_by_course("Art").inspect
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux

Entraînez-vous par vous-même : Compilateur Ruby en ligne