Menu
Coddy logo textTech

성적 추가

Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 50번째.

이제 add_grade 메서드를 사용하여 시스템을 확장해 보세요. 이 메서드는 학생이 존재하는 경우에 한해 학생의 :grades 배열에 숫자 성적을 추가합니다.

이름이 기록에 없으면 해당 내용을 보고하고 종료합니다.

challenge icon

챌린지

쉬움

이전 레슨에서 작성한 $student_records 해시와 add_student 메서드를 그대로 유지하세요. 다음 기능을 수행하는 add_grade(name, grade) 메서드를 추가하세요:

  1. 이름이 존재하지 않으면 Student '<name>' not found.를 출력하고 반환합니다.
  2. 이름이 존재하면 해당 학생의 :grades 배열에 grade를 추가하고 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

# 할 일: 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실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 및 흐름의 모든 레슨