Menu
CoddyTech

Thêm điểm

Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 50 trên 56.

Giờ hãy mở rộng hệ thống bằng một phương thức add_grade. Phương thức này thêm một điểm số vào mảng :grades của học sinh, miễn là học sinh đó tồn tại.

Nếu tên không có trong hồ sơ, hãy thông báo điều đó rồi dừng lại.

challenge icon

Thử thách

Dễ

Giữ nguyên hash $student_records và add_student từ bài học trước. Thêm phương thức add_grade(name, grade) để:

  1. In ra Student '<name>' not found. nếu tên không tồn tại, rồi trả về.
  2. Nếu không, thêm grade vào mảng :grades của học viên và in ra Grade <grade> added for '<name>'.

Thay khối kiểm thử ở cuối bằng:

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

Đầu ra mong đợi:

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

Tự làm thử

$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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng xử lý

Tự luyện tập: Trình biên dịch Ruby online