Menu
CoddyTech

Điểm trung bình

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

Thêm một phương thức trả về điểm trung bình của học sinh, đúng kiểu tính toán tổng hợp mà Enumerable được tạo ra để thực hiện.

Hãy chú ý đến hai trường hợp biên: học sinh không tồn tại và học sinh chưa có điểm nào.

challenge icon

Thử thách

Dễ

Thêm một phương thức average_grade(name) để:

  1. In ra Student '<name>' not found. và trả về nil nếu tên đó không tồn tại.
  2. Trả về 0 nếu học sinh tồn tại nhưng chưa có điểm.
  3. Nếu không, trả về trung bình cộng của :grades dưới dạng Float.

Thay khối kiểm tra bằng:

add_student("Alice", 20, ["Math"])
add_student("Bob",   22, ["Biology"])
add_grade("Alice", 90)
add_grade("Alice", 80)
puts average_grade("Alice")
puts average_grade("Bob")
puts average_grade("Charlie").inspect

Đầu ra mong đợi:

Student 'Alice' added.
Student 'Bob' added.
Grade 90 added for 'Alice'.
Grade 80 added for 'Alice'.
85.0
0
Student 'Charlie' not found.
nil

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

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

# TODO: định nghĩa hàm (function) average_grade(name), xử lý trường hợp không tìm thấy học sinh hoặc chưa có điểm, trả về điểm trung bình kiểu Float

add_student("Alice", 20, ["Math"])
add_student("Bob",   22, ["Biology"])
add_grade("Alice", 90)
add_grade("Alice", 80)
puts average_grade("Alice")
puts average_grade("Bob")
puts average_grade("Charlie").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