ציון ממוצע
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 51 מתוך 56.
הוסיפו מתודה שמחזירה את הממוצע של ציוני תלמיד, בדיוק מסוג חישובי הסיכום שלמענם נבנה Enumerable.
שימו לב לשני מקרי קצה: התלמיד לא קיים, ולתלמיד עדיין אין ציונים.
אתגר
קלהוסף מתודה average_grade(name) ש:
- מדפיסה
Student '<name>' not found.ומחזירהnilאם השם לא קיים. - מחזירה
0אם התלמיד קיים אך אין לו ציונים. - אחרת מחזירה את הממוצע החשבוני של
: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
# TODO: 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
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מחרוזות לעומק
סקירה של מתודות למחרוזותאינטרפולציה של מחרוזותמעבר על מחרוזותפיצול וחיבורסיכום – שוזר המחרוזות4בלוקים, Procs ו־Lambdas
מהו בלוק?do..end לעומת סוגריים מסולסליםמילת המפתח yieldפרמטרים של בלוקProcs ו־Lambdasסיכום – איטרטור מותאם אישית7Hashes חלק 2
Hash.new עם ערכי ברירת מחדלמעבר על HashesHashes מקונניםמיזוג ושינויסיכום - מונה תדירויות10פרויקט - רשומות תלמידים
סקירת הפרויקטהוספת תלמיד5עוצמת Enumerable
Select ו־Rejectשרשור MapReduce / Injectcount, all?, any?, none?group_by ו־partitionsort_by, min_by, max_byסיכום - צינור נתוניםתרגלו בעצמכם: קומפיילר Ruby אונליין