Menu
Coddy logo textTech

Ajouter une note

Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 50 sur 56.

Étendez maintenant le système avec une méthode add_grade. Elle ajoute une note numérique au tableau :grades de l'étudiant, tant que l'étudiant existe.

Si le nom n'est pas dans les dossiers, signalez-le et abandonnez l'opération.

challenge icon

Défi

Facile

Conservez votre hash $student_records et votre méthode add_student de la leçon précédente. Ajoutez une méthode add_grade(name, grade) qui :

  1. Affiche Student '<name>' not found. si le nom n'existe pas, et s'arrête.
  2. Sinon, ajoute grade dans le tableau :grades de l'étudiant et affiche Grade <grade> added for '<name>'.

Remplacez le bloc de test en bas par :

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_grade("Alice", 90)
add_grade("Alice", 85)
add_grade("Bob", 75)
add_grade("Charlie", 80)
puts $student_records.inspect

Résultat attendu :

Student 'Alice' added.
Student 'Bob' added.
Grade 90 added for 'Alice'.
Grade 85 added for 'Alice'.
Grade 75 added for 'Bob'.
Student 'Charlie' not found.
{"Alice"=>{:age=>20, :grades=>[90, 85], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[75], :courses=>["Biology", "Chemistry"]}}

Aide-mémoire

Ajoutez une méthode add_grade(name, grade) qui vérifie l'existence, puis ajoute à :grades :

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

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

# TODO: def add_grade(name, grade)

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_grade("Alice", 90)
add_grade("Alice", 85)
add_grade("Bob", 75)
add_grade("Charlie", 80)
puts $student_records.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