Program Utuh · Pelajaran 11 dari 11
Proyek: kalkulator nilai rapor
10 menit baca · BelajarCode
Kita akan membuat program yang menerima nilai beberapa mata pelajaran, lalu menampilkan ringkasan rapor.
Kebutuhan program
- Tanyakan berapa mata pelajaran yang akan dimasukkan.
- Untuk setiap mata pelajaran, tanyakan nama dan nilainya. Nilai harus 0 sampai 100. Jika tidak, tanyakan lagi.
- Tampilkan setiap mata pelajaran beserta predikatnya.
- Tampilkan rata-rata, nilai tertinggi, dan nilai terendah.
Programnya
1def predikat(nilai):2 if nilai >= 90:3 return "A"4 elif nilai >= 80:5 return "B"6 elif nilai >= 70:7 return "C"8 return "D"91011def baca_nilai(mapel):12 nilai = int(input(f"Nilai {mapel}: "))13 while nilai < 0 or nilai > 100:14 print("Nilai harus 0 sampai 100.")15 nilai = int(input(f"Nilai {mapel}: "))16 return nilai171819jumlah = int(input("Berapa mata pelajaran? "))20daftar_mapel = []21daftar_nilai = []2223for i in range(jumlah):24 mapel = input(f"Nama mapel ke-{i + 1}: ")25 daftar_mapel.append(mapel)26 daftar_nilai.append(baca_nilai(mapel))2728print()29print("=== RAPOR ===")30for i in range(jumlah):31 nilai = daftar_nilai[i]32 print(f"{daftar_mapel[i]:<15}{nilai:>4} {predikat(nilai)}")3334rata = sum(daftar_nilai) / jumlah35print(f"Rata-rata : {rata:.1f} ({predikat(rata)})")36print("Tertinggi :", max(daftar_nilai))37print("Terendah :", min(daftar_nilai))Berapa mata pelajaran? 3 Nama mapel ke-1: Matematika Nilai Matematika: 88 Nama mapel ke-2: Informatika Nilai Informatika: 105 Nilai harus 0 sampai 100. Nilai Informatika: 95 Nama mapel ke-3: IPA Nilai IPA: 76 === RAPOR === Matematika 88 B Informatika 95 A IPA 76 C Rata-rata : 86.3 (B) Tertinggi : 95 Terendah : 76
Hal baru di program ini
{daftar_mapel[i]:<15}menulis teks rata kiri selebar 15 karakter, dan{nilai:>4}menulis angka rata kanan selebar 4 karakter. Hasilnya kolom yang sejajar.- Fungsi
baca_nilaimemakaiwhileuntuk terus bertanya sampai nilainya masuk akal. Teknik ini disebut validasi masukan. - Fungsi
predikatdipakai ulang untuk setiap mapel dan untuk rata-rata.
Pecah menjadi fungsi kecil
Program yang panjang lebih mudah dibuat kalau dipecah menjadi fungsi kecil yang masing-masing mengerjakan satu hal. Uji setiap fungsi sendiri-sendiri sebelum menggabungkannya.
Cek pemahaman
Apa gunanya perulangan while di dalam fungsi baca_nilai?
Latihan
Hitung mapel yang tuntas
Tambahkan fitur baru: tampilkan berapa mata pelajaran yang tuntas (nilai 75 ke atas) dan daftar nama mapel yang belum tuntas. Kalau semua tuntas, tampilkan Semua mapel tuntas.
Pembahasan
Tambahkan baris berikut di akhir program:
1daftar_mapel = ["Matematika", "Informatika", "IPA", "IPS"]2daftar_nilai = [88, 95, 72, 64]34tuntas = 05belum = []6for i in range(len(daftar_nilai)):7 if daftar_nilai[i] >= 75:8 tuntas += 19 else:10 belum.append(daftar_mapel[i])1112print("Mapel tuntas:", tuntas)13if len(belum) == 0:14 print("Semua mapel tuntas")15else:16 print("Belum tuntas:", ", ".join(belum))Mapel tuntas: 2 Belum tuntas: IPA, IPS
Contoh di atas memakai data tetap supaya mudah diuji. ", ".join(belum) menggabungkan isi list menjadi satu teks yang dipisah koma.
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.