Belum masuk. Progresmu tidak tersimpan.

Masuk
Ruang Materi
Masuk

Rekap Nilai Kelas

Bangun sendiri dari brief di bawah. Semua pemeriksaan lolos berarti proyekmu selesai, salah satu syarat sertifikat Pemrograman Python: Dari Nol sampai Proyek Mini.

Brief

Kembangkan proyek mini Kalkulator Nilai Siswa menjadi modul Rekap Nilai Kelas yang rapi: setiap tugas punya fungsinya sendiri, data rusak tidak membuat program berhenti, dan nilai siswa disimpan di sebuah class.

Program tidak memakai input() maupun file. Data datang sebagai list teks berformat "nama,nilai", misalnya DATA yang sudah disiapkan:

DATA = ["Ani,88", "Budi,72.5", "Citra,54", "Dodi,abc", "Eka", ",90", "Fajar,101"]

Fungsi wajib

NamaTugas
grade(n)Kembalikan "A" bila n >= 85, "B" bila n >= 70, "C" bila n >= 55, selain itu "D".
rata_rata(nilai)Rata-rata semua nilai di dict {nama: nilai}, dibulatkan 1 desimal dengan round. Dict kosong menghasilkan 0.0.
rekap(nilai)List baris teks sesuai urutan dict, tiap baris f"{nama:<8} {n:>5.1f} {grade(n)}".
parse_baris(baris)Ubah "Ani,88" menjadi tuple ("Ani", 88.0). Spasi di sekitar nama dan nilai dibuang. Lempar ValueError bila jumlah bagian bukan 2, nama kosong, nilai bukan angka, atau nilai di luar 0 sampai 100.
muat(daftar_baris)Dict {nama: nilai} dari baris yang valid. Pakai try/except ValueError untuk melewati baris rusak.

Class Kelas

  • __init__(self): buat atribut self.nilai = {}.
  • tambah(self, nama, nilai): simpan nilai sebagai float; lempar ValueError bila nilai di luar 0 sampai 100.
  • terbaik(self): nama siswa dengan nilai tertinggi, atau None bila belum ada data.

Contoh hasil

grade(84.9)                      # "B"
rata_rata({"Ani": 88, "Budi": 72.5, "Citra": 54})   # 71.5
rekap({"Ani": 88, "Budi": 72.5})
# ["Ani       88.0  A", "Budi      72.5  B"]
parse_baris(" Ani , 88 ")        # ("Ani", 88.0)
parse_baris("Fajar,101")         # ValueError
muat(DATA)                       # {"Ani": 88.0, "Budi": 72.5, "Citra": 54.0}

k = Kelas()
k.tambah("Ani", 80)
k.tambah("Budi", 92)
k.terbaik()                      # "Budi"

Tulis kode yang rapi sesuai PEP 8: indentasi 4 spasi, nama snake_case, dan satu fungsi untuk satu tugas.

Latihan kode: Rekap Nilai Kelas

Lengkapi fungsi grade, rata_rata, rekap, parse_baris, dan muat serta class Kelas agar data nilai berformat "nama,nilai" bisa dibersihkan, dihitung rata-ratanya, dan direkap rapi seperti proyek Kalkulator Nilai Siswa.