Nilai Rata-Rata
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 51 dari 56.
Tambahkan method yang mengembalikan rata-rata nilai seorang siswa, jenis perhitungan ringkasan yang memang menjadi tujuan pembuatan Enumerable.
Perhatikan dua kondisi khusus: siswa tersebut tidak ada, dan siswa tersebut belum memiliki nilai.
Tantangan
MudahTambahkan method average_grade(name) yang:
- Mencetak
Student '<name>' not found.dan mengembalikanniljika nama tersebut tidak ada. - Mengembalikan
0jika siswa tersebut ada tetapi tidak memiliki nilai. - Jika tidak, mengembalikan rata-rata aritmetika dari
:gradessebagai Float.
Ganti blok pengujian dengan:
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").inspectOutput yang diharapkan:
Student 'Alice' added.
Student 'Bob' added.
Grade 90 added for 'Alice'.
Grade 80 added for 'Alice'.
85.0
0
Student 'Charlie' not found.
nilCoba sendiri
$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), tangani siswa yang tidak ditemukan dan grades yang kosong, kembalikan rata-rata bertipe 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
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Ringkasan Method StringInterpolasi StringMenelusuri StringMemisahkan dan MenggabungkanRekap: Perangkai String4Block, Proc, dan Lambda
Apa Itu Block?do..end vs Kurung KurawalKata Kunci yieldParameter BlockProc dan LambdaRangkuman, Iterator Kustom7Hash Bagian 2
Hash.new dengan Nilai BawaanMenelusuri HashHash BersarangMenggabungkan dan MengubahRangkuman: Penghitung Frekuensi10Proyek: Data Siswa
Gambaran Umum ProyekTambahkan Siswa5Andalan Enumerable
Select dan RejectMerangkai MapReduce / Injectcount, all?, any?, none?group_by dan partitionsort_by, min_by, max_byRekap: Alur Data8Pengambilan Keputusan Lanjutan
Case dengan class & regexwhen dengan Banyak NilaiOperator Ternaryif / unless SebarisUlasan, Pengklasifikasi NilaiLatihan sendiri: Compiler Ruby online