Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

متوسط الدرجات

جزء من قسم المنطق وتدفق العمليات في رحلة Ruby على Coddy. الدرس 51 من 56.

أضف دالة تعيد متوسط درجات الطالب، وهو بالضبط نوع الحسابات التلخيصية التي صُممت Enumerable من أجلها.

انتبه لحالتين حديتين: الطالب غير موجود، والطالب ليس لديه درجات بعد.

challenge icon

التحدي

سهل

أضف طريقة average_grade(name) تقوم بما يلي:

  1. تطبع Student '<name>' not found. وتعيد nil إذا كان الاسم غير موجود.
  2. تعيد 0 إذا كان الطالب موجوداً ولكن ليس لديه درجات.
  3. بخلاف ذلك، تعيد المتوسط الحسابي لـ :grades كـ 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

المخرجات المتوقعة:

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

جرّب بنفسك

$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

# مهام: def average_grade(name)، يعالج حالة الطالب المفقود، والدرجات الفارغة، ويعيد المتوسط كـ 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 iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق العمليات

تدرّب بنفسك: مترجم Ruby عبر الإنترنت