Langsung ke konten

Proyek 1: Membuat Kalkulator Sederhana di Python

Kalkulator sederhana adalah proyek pertama seri ini. Artikel ini memandu membuat kalkulator dengan menu, validasi input, dan penanganan error di Python.

Belajar Python Level Basic
Belajar Python Level Basic
Advertisement

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:

  1. Function operasi untuk tiap perhitungan.
  2. Menu yang menampilkan pilihan.
  3. Function input yang mengulang sampai angkanya valid.
  4. Function main() yang mengatur alurnya.
  5. 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:

  • break keluar dari loop saat pengguna memilih 5.
  • continue melewati sisa iterasi saat pilihan tidak dikenal.
  • try dan except menangkap pembagian dengan nol.
  • else menampilkan hasil hanya kalau tidak ada error.
  • {hasil:g} menampilkan angka tanpa nol yang tidak perlu, misalnya 8 bukan 8.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 with dan json.
  • 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 ValueError saat pengguna salah ketik.
  • Lupa memeriksa pembagian nol — memicu ZeroDivisionError yang tidak tertangani.
  • Membandingkan pilihan tanpa mengubah tipe — input() mengembalikan string, jadi bandingkan dengan "5", bukan 5.
  • 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 valid
  • try, except, dan else menjaga 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.