Artikel ini bagian dari seri Belajar Python Level Basic di hanifmu.com. Di artikel sebelumnya kita sudah membahas Debugging Dasar. Sekarang saatnya membangun program utuh.
Proyek pertama ini sederhana, tapi memakai hampir semua yang sudah kamu pelajari: function, dictionary, loop, percabangan, input, dan penanganan error. Membuatnya dari awal sampai jalan adalah cara terbaik memastikan pemahamanmu benar-benar menempel.
Apa yang Akan Dibuat
Program kalkulator yang bisa:
- Menampilkan menu operasi: penjumlahan, pengurangan, perkalian, pembagian.
- Menerima dua angka dari pengguna.
- Memvalidasi bahwa yang dimasukkan benar-benar angka.
- Menangani pembagian dengan nol tanpa membuat program berhenti.
- Terus berjalan sampai pengguna memilih keluar.
Rancangan Program
Sebelum menulis kode, tentukan dulu bagian-bagiannya:
- Function operasi untuk tiap perhitungan.
- Menu yang menampilkan pilihan.
- Function input yang mengulang sampai angkanya valid.
- Function
main()yang mengatur alurnya. - Blok
if __name__ == "__main__"agar file bisa dijalankan langsung.
Membagi pekerjaan seperti ini membuat tiap bagian kecil dan mudah diuji.
Menyiapkan Function Operasi
Mulai dari bagian yang paling jelas, yaitu perhitungannya:
def tambah(a, b):
return a + b
def kurang(a, b):
return a - b
def kali(a, b):
return a * b
def bagi(a, b):
if b == 0:
raise ZeroDivisionError("Tidak bisa membagi dengan nol")
return a / b
Pada bagi(), pembagian dengan nol diperiksa lebih dulu. Kalau b bernilai 0, function membangkitkan ZeroDivisionError dengan pesan yang jelas, seperti yang dipelajari di artikel tentang raise.
Function-function ini kemudian disimpan dalam dictionary agar mudah dipanggil berdasarkan pilihan menu:
OPERASI = {
"1": ("Penjumlahan", tambah),
"2": ("Pengurangan", kurang),
"3": ("Perkalian", kali),
"4": ("Pembagian", bagi),
}
Menyimpan function sebagai nilai di dictionary membuat kode menu jauh lebih ringkas daripada rantai if panjang.
Membuat Menu
Menu menampilkan pilihan berdasarkan isi OPERASI:
def tampilkan_menu():
print("\n=== Kalkulator Sederhana ===")
for kunci, (nama, _) in OPERASI.items():
print(f"{kunci}. {nama}")
print("5. Keluar")
Karena daftarnya diambil dari OPERASI, menambah operasi baru cukup dilakukan di satu tempat.
Memvalidasi Input
Input pengguna bisa berisi apa saja. Function berikut mengulang sampai mendapat angka yang benar:
def minta_angka(prompt):
while True:
try:
return float(input(prompt))
except ValueError:
print("Masukkan angka yang valid.")
float() dipakai agar pengguna bisa memasukkan angka desimal. Kalau konversi gagal, ValueError ditangkap dan pengguna diminta mencoba lagi, tanpa program berhenti.
Menyatukan di main()
Bagian utama mengatur alurnya:
def main():
while True:
tampilkan_menu()
pilihan = input("Pilih menu (1-5): ")
if pilihan == "5":
print("Terima kasih, sampai jumpa!")
break
if pilihan not in OPERASI:
print("Pilihan tidak tersedia.")
continue
nama, operasi = OPERASI[pilihan]
a = minta_angka("Angka pertama: ")
b = minta_angka("Angka kedua: ")
try:
hasil = operasi(a, b)
except ZeroDivisionError as e:
print(f"Error: {e}")
else:
print(f"Hasil {nama.lower()}: {hasil:g}")
Perhatikan beberapa hal:
breakkeluar dari loop saat pengguna memilih 5.continuemelewati sisa iterasi saat pilihan tidak dikenal.trydanexceptmenangkap pembagian dengan nol.elsemenampilkan hasil hanya kalau tidak ada error.{hasil:g}menampilkan angka tanpa nol yang tidak perlu, misalnya8bukan8.0.
Kode Lengkap
Simpan sebagai kalkulator.py:
# kalkulator.py
def tambah(a, b):
return a + b
def kurang(a, b):
return a - b
def kali(a, b):
return a * b
def bagi(a, b):
if b == 0:
raise ZeroDivisionError("Tidak bisa membagi dengan nol")
return a / b
OPERASI = {
"1": ("Penjumlahan", tambah),
"2": ("Pengurangan", kurang),
"3": ("Perkalian", kali),
"4": ("Pembagian", bagi),
}
def tampilkan_menu():
print("\n=== Kalkulator Sederhana ===")
for kunci, (nama, _) in OPERASI.items():
print(f"{kunci}. {nama}")
print("5. Keluar")
def minta_angka(prompt):
while True:
try:
return float(input(prompt))
except ValueError:
print("Masukkan angka yang valid.")
def main():
while True:
tampilkan_menu()
pilihan = input("Pilih menu (1-5): ")
if pilihan == "5":
print("Terima kasih, sampai jumpa!")
break
if pilihan not in OPERASI:
print("Pilihan tidak tersedia.")
continue
nama, operasi = OPERASI[pilihan]
a = minta_angka("Angka pertama: ")
b = minta_angka("Angka kedua: ")
try:
hasil = operasi(a, b)
except ZeroDivisionError as e:
print(f"Error: {e}")
else:
print(f"Hasil {nama.lower()}: {hasil:g}")
if __name__ == "__main__":
main()
Contoh Jalannya Program
Berikut salah satu sesi pemakaian:
=== Kalkulator Sederhana ===
1. Penjumlahan
2. Pengurangan
3. Perkalian
4. Pembagian
5. Keluar
Pilih menu (1-5): 3
Angka pertama: 12
Angka kedua: 4
Hasil perkalian: 48
=== Kalkulator Sederhana ===
1. Penjumlahan
2. Pengurangan
3. Perkalian
4. Pembagian
5. Keluar
Pilih menu (1-5): 4
Angka pertama: 10
Angka kedua: 0
Error: Tidak bisa membagi dengan nol
=== Kalkulator Sederhana ===
1. Penjumlahan
2. Pengurangan
3. Perkalian
4. Pembagian
5. Keluar
Pilih menu (1-5): 5
Terima kasih, sampai jumpa!
Coba juga memasukkan huruf saat diminta angka. Program akan menolak dengan sopan dan meminta ulang, bukan berhenti.
Pengembangan Lanjutan
Setelah versi dasar jalan, coba tambahkan sendiri:
- Operasi modulo dan pangkat.
- Perhitungan berantai tanpa kembali ke menu.
- Riwayat perhitungan yang disimpan ke file memakai
withdanjson. - Pilihan untuk keluar kapan saja dengan mengetik
q.
Kesalahan Umum Pemula
- Langsung menulis semua kode sekaligus — lebih mudah salah; uji tiap function dulu.
- Tidak memvalidasi input — program berhenti dengan
ValueErrorsaat pengguna salah ketik. - Lupa memeriksa pembagian nol — memicu
ZeroDivisionErroryang tidak tertangani. - Membandingkan pilihan tanpa mengubah tipe —
input()mengembalikan string, jadi bandingkan dengan"5", bukan5. - Loop tanpa jalan keluar — pastikan selalu ada pilihan untuk berhenti.
Ringkasan
- Kalkulator memakai function, dictionary, loop, dan penanganan error sekaligus
- Function disimpan di dictionary agar bisa dipanggil berdasarkan pilihan menu
minta_angka()mengulang sampai input validtry,except, danelsemenjaga program tetap berjalan- Loop utama terus berjalan sampai pengguna memilih keluar
if __name__ == "__main__"membuat file bisa dijalankan langsung
Langkah Selanjutnya
Kamu sudah membuat program pertama yang utuh. Sekarang kita tingkatkan dengan program yang datanya bisa berubah dan disimpan selama dipakai.
Artikel selanjutnya adalah Proyek 2: Program To-Do List, tempat kamu mengelola daftar tugas dengan struktur data yang lebih kaya.
