Menu
Coddy logo textTech

成績の追加

CoddyのRubyジャーニー「ロジックとフロー」セクションの一部 — レッスン 50/56。

システムをadd_gradeメソッドで拡張しましょう。その生徒が存在する限り、生徒の:grades配列に数値の成績を追加します。

名前が記録にない場合は、その旨を報告して終了します。

challenge icon

チャレンジ

簡単

前のレッスンで作成した $student_records ハッシュと add_student をそのまま使用します。以下の処理を行う add_grade(name, grade) メソッドを追加してください:

  1. 名前が存在しない場合は、Student '<name>' not found. と出力して終了(return)します。
  2. 名前が存在する場合は、その生徒の :grades 配列に grade を追加(push)し、Grade <grade> added for '<name>'. と出力します。

下部にあるテストブロックを次のように置き換えてください:

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

期待される出力:

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"]}}

チートシート

存在を確認してから :grades に追加する add_grade(name, grade) メソッドを追加します。

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

自分で試してみよう

$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 icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン