# PYTHON # CODING đŸ‘ī¸ 14 views âąī¸ 14 min read

Tutorial Python untuk Pemula: Bikin Aplikasi Kasir Sederhana dalam 30 Menit

Ingin belajar Python dengan project nyata? Ikuti tutorial ini untuk membangun aplikasi kasir sederhana yang fungsional, cocok untuk pemula yang ingin hasil cepat.

aplikasi kasih python
aplikasi kasih python

Pernah membayangkan bagaimana aplikasi kasir di warung atau minimarket bekerja? Atau ingin punya alat bantu sederhana untuk mencatat transaksi jualan online-mu? Kamu datang ke tempat yang tepat!

Dalam tutorial Python untuk pemula ini, kita akan langsung terjun praktik membangun aplikasi kasir sederhana. Kita tidak akan berlama-lama dengan teori, melainkan fokus pada kode yang bisa kamu ikuti langkah demi langkah. Tujuannya jelas: setelah 30 menit, kamu akan punya sebuah program kasir fungsional yang berjalan di komputermu, siap digunakan untuk latihan atau bahkan membantu bisnismu!

Siapkan editor kode dan semangatmu, karena kita akan segera memulai petualangan coding yang seru ini. Kamu akan belajar banyak hal fundamental yang sangat berguna di dunia pengembangan software.

  • Membuat daftar produk dan harganya.
  • Menerima input dari pengguna (memilih produk dan jumlah).
  • Menghitung total belanja.
  • Memproses pembayaran dan menghitung kembalian.
  • Menggunakan struktur kontrol dasar Python (loop dan kondisi).
  • Membangun aplikasi interaktif berbasis teks.

Apa Itu Aplikasi Kasir Sederhana?

Secara sederhana, aplikasi kasir adalah program yang membantu kita mencatat penjualan, menghitung total harga barang yang dibeli pelanggan, dan memproses pembayaran. Ini adalah tulang punggung operasional di banyak bisnis ritel, dari warung kopi kecil hingga supermarket besar.

Dalam konteks aplikasi kasir sederhana yang akan kita buat, program ini akan berinteraksi dengan pengguna melalui teks (terminal). Kamu akan bisa memilih barang dari daftar menu, memasukkan jumlahnya, melihat total belanja, dan kemudian memasukkan jumlah uang yang dibayarkan pelanggan untuk menghitung kembalian. Anggap saja ini sebagai kalkulator pintar yang bisa mengingat daftar barang dan harganya, lalu secara otomatis menghitung semua yang dibutuhkan untuk transaksi jual beli.

â„šī¸ Info: Aplikasi kasir yang lebih kompleks biasanya terintegrasi dengan database untuk menyimpan data produk, stok, riwayat transaksi, bahkan terhubung dengan printer struk. Tapi untuk pemula, kita akan fokus pada logika inti transaksi terlebih dahulu!

Persiapan

Sebelum kita mulai coding, ada beberapa hal yang perlu kamu siapkan:

  • Python 3.8 atau yang lebih baru: Pastikan kamu sudah menginstal Python di komputermu. Versi 3.8 ke atas adalah standar yang baik di tahun 2026.
  • Editor Teks: Visual Studio Code, Sublime Text, Atom, atau bahkan Notepad++ sudah cukup. VS Code sangat direkomendasikan karena fitur-fiturnya yang lengkap untuk developer.
  • Pengetahuan Dasar Python: Kamu setidaknya sudah familiar dengan konsep variabel, tipe data (string, integer, float), operator dasar, serta struktur kontrol seperti if/else dan for/while loop.

Mari kita cek apakah Python sudah terinstal dengan benar. Buka terminal atau Command Prompt-mu dan jalankan perintah berikut:

python3 --version
# atau jika python3 tidak ditemukan, coba:
python --version

Kamu akan melihat output yang menunjukkan versi Python yang terinstal, misalnya:

Python 3.10.6

Jika kamu melihat pesan error atau tidak menemukan perintahnya, silakan instal Python terlebih dahulu dari situs resmi Python.

Langkah 1: Membuat Struktur Project dan Daftar Produk

Di langkah pertama ini, kita akan membuat file Python utama dan mendefinisikan daftar produk yang akan dijual di aplikasi kasir kita.

Buat sebuah folder baru di komputermu (misalnya, aplikasi_kasir), lalu di dalamnya buat file dengan nama kasir.py:

# kasir.py

# Daftar produk yang tersedia di toko
# Menggunakan dictionary untuk menyimpan nama produk dan harganya
# Kunci (key) adalah nama produk, Nilai (value) adalah harga
daftar_produk = {
    "kopi": 15000,
    "teh": 10000,
    "roti": 12000,
    "mie instan": 5000,
    "air mineral": 3000
}

print("Selamat datang di Kasir Sederhana!")
print("Daftar Produk:")
for produk, harga in daftar_produk.items():
    print(f"- {produk.capitalize()}: Rp{harga:,}")

# Kita akan menambahkan logika kasir di langkah berikutnya

Penjelasan kode:

  • daftar_produk: Ini adalah dictionary di Python. Kita menggunakannya untuk menyimpan data produk. Setiap produk punya nama (string, sebagai key) dan harga (integer, sebagai value).
  • for produk, harga in daftar_produk.items():: Kita menggunakan loop for untuk mengiterasi setiap pasangan kunci-nilai (produk dan harga) dalam dictionary daftar_produk.
  • print(f"- {produk.capitalize()}: Rp{harga:,}"): Ini adalah f-string, cara modern di Python untuk memformat string.
    • produk.capitalize(): Mengubah huruf pertama dari nama produk menjadi kapital agar terlihat lebih rapi.
    • harga:,: Ini adalah format specifier di f-string yang akan menambahkan koma sebagai pemisah ribuan (misalnya, 15000 menjadi 15,000).

Jalankan file ini dari terminalmu:

python3 kasir.py
# atau
python kasir.py

Output yang diharapkan:

Selamat datang di Kasir Sederhana!
Daftar Produk:
- Kopi: Rp15,000
- Teh: Rp10,000
- Roti: Rp12,000
- Mie instan: Rp5,000
- Air mineral: Rp3,000

Langkah 2: Menerima Pesanan dari Pelanggan

Sekarang, mari kita tambahkan logika untuk memungkinkan pelanggan memilih produk dan jumlah yang mereka inginkan. Kita akan menyimpan pesanan mereka dalam sebuah keranjang belanja.

Edit file kasir.py-mu:

# kasir.py

daftar_produk = {
    "kopi": 15000,
    "teh": 10000,
    "roti": 12000,
    "mie instan": 5000,
    "air mineral": 3000
}

keranjang_belanja = [] # List untuk menyimpan item yang dibeli

print("Selamat datang di Kasir Sederhana!")
print("Daftar Produk:")
for produk, harga in daftar_produk.items():
    print(f"- {produk.capitalize()}: Rp{harga:,}")

# Loop utama untuk menerima pesanan
while True:
    print("\n--- Masukkan Pesanan ---")
    nama_produk = input("Nama produk (ketik 'selesai' untuk checkout): ").lower()

    if nama_produk == 'selesai':
        break # Keluar dari loop jika user mengetik 'selesai'

    if nama_produk in daftar_produk:
        while True:
            try:
                jumlah = int(input(f"Jumlah {nama_produk.capitalize()}: "))
                if jumlah > 0:
                    keranjang_belanja.append({"produk": nama_produk, "jumlah": jumlah, "harga": daftar_produk[nama_produk]})
                    print(f"{jumlah} {nama_produk.capitalize()} ditambahkan ke keranjang.")
                    break # Keluar dari loop input jumlah jika valid
                else:
                    print("Jumlah harus lebih dari 0.")
            except ValueError:
                print("Input jumlah tidak valid. Harap masukkan angka.")
    else:
        print("Produk tidak ditemukan. Mohon cek kembali daftar produk.")

# Kita akan menambahkan kalkulasi total dan pembayaran di langkah berikutnya

Penjelasan kode:

  • keranjang_belanja = []: Ini adalah list kosong yang akan kita gunakan untuk menyimpan setiap item yang dipilih pelanggan. Setiap item akan menjadi dictionary yang berisi produk, jumlah, dan harga per unitnya.
  • while True:: Ini adalah loop tak terbatas yang akan terus berjalan sampai kita secara eksplisit menghentikannya dengan break. Ini memungkinkan pelanggan untuk terus menambahkan item ke keranjang.
  • input("Nama produk..."): Fungsi input() digunakan untuk menerima masukan dari pengguna. .lower() mengubah input menjadi huruf kecil agar cocok dengan kunci di daftar_produk.
  • if nama_produk == 'selesai': break: Jika pengguna mengetik "selesai", loop akan berhenti dan kita akan melanjutkan ke proses checkout.
  • if nama_produk in daftar_produk:: Memeriksa apakah produk yang dimasukkan pengguna ada dalam daftar produk kita.
  • try-except ValueError: Ini adalah blok penanganan error. Jika pengguna memasukkan teks (bukan angka) saat diminta jumlah, int() akan gagal dan memicu ValueError. Blok except akan menangkap error ini dan menampilkan pesan yang lebih ramah.
  • keranjang_belanja.append(...): Menambahkan dictionary baru yang mewakili item yang dipesan ke dalam keranjang_belanja.

Coba jalankan lagi kasir.py dan masukkan beberapa pesanan:

python3 kasir.py

Contoh interaksi:

Selamat datang di Kasir Sederhana!
Daftar Produk:
- Kopi: Rp15,000
- Teh: Rp10,000
- Roti: Rp12,000
- Mie Instan: Rp5,000
- Air Mineral: Rp3,000

--- Masukkan Pesanan ---
Nama produk (ketik 'selesai' untuk checkout): kopi
Jumlah Kopi: 2
2 Kopi ditambahkan ke keranjang.

--- Masukkan Pesanan ---
Nama produk (ketik 'selesai' untuk checkout): roti
Jumlah Roti: 1
1 Roti ditambahkan ke keranjang.

--- Masukkan Pesanan ---
Nama produk (ketik 'selesai' untuk checkout): jus
Produk tidak ditemukan. Mohon cek kembali daftar produk.

--- Masukkan Pesanan ---
Nama produk (ketik 'selesai' untuk checkout): teh
Jumlah Teh: tiga
Input jumlah tidak valid. Harap masukkan angka.
Jumlah Teh: 3
3 Teh ditambahkan ke keranjang.

--- Masukkan Pesanan ---
Nama produk (ketik 'selesai' untuk checkout): selesai

Langkah 3: Menghitung Total Belanja

Setelah semua pesanan terkumpul, saatnya menghitung berapa total yang harus dibayar pelanggan. Kita akan mengiterasi keranjang belanja dan menjumlahkan semua subtotal.

Tambahkan kode berikut di bagian bawah file kasir.py, setelah loop while True:

# kasir.py

# ... (kode sebelumnya) ...

# Bagian ini ditambahkan setelah loop pesanan selesai
total_belanja = 0
if not keranjang_belanja: # Cek jika keranjang kosong
    print("\nKeranjang belanja kosong. Tidak ada transaksi.")
else:
    print("\n--- Rincian Belanja ---")
    print("-" * 30) # Garis pemisah
    for item in keranjang_belanja:
        subtotal = item["jumlah"] * item["harga"]
        print(f"{item['produk'].capitalize()} ({item['jumlah']}x) @ Rp{item['harga']:,} = Rp{subtotal:,}")
        total_belanja += subtotal
    print("-" * 30)
    print(f"Total Belanja: Rp{total_belanja:,}")

# Kita akan menambahkan proses pembayaran di langkah berikutnya

Penjelasan kode:

  • total_belanja = 0: Variabel untuk menyimpan akumulasi total harga.
  • if not keranjang_belanja:: Memeriksa apakah list keranjang_belanja kosong. Jika ya, berarti tidak ada item yang dipesan.
  • for item in keranjang_belanja:: Loop untuk setiap item di keranjang.
  • subtotal = item["jumlah"] * item["harga"]: Menghitung subtotal untuk setiap jenis barang.
  • total_belanja += subtotal: Menambahkan subtotal ke total_belanja.

Jalankan kembali dan coba lakukan checkout:

python3 kasir.py

Contoh output (setelah memasukkan pesanan dan mengetik 'selesai'):

... (interaksi pesanan) ...
Nama produk (ketik 'selesai' untuk checkout): selesai

--- Rincian Belanja ---
------------------------------
Kopi (2x) @ Rp15,000 = Rp30,000
Roti (1x) @ Rp12,000 = Rp12,000
Teh (3x) @ Rp10,000 = Rp30,000
------------------------------
Total Belanja: Rp72,000

Langkah 4: Proses Pembayaran dan Kembalian

Langkah terakhir dalam siklus transaksi adalah menerima pembayaran dari pelanggan dan menghitung kembaliannya. Kita juga perlu menangani kasus di mana uang yang dibayarkan kurang.

Tambahkan kode berikut di bagian bawah file kasir.py, setelah menampilkan total belanja:

# kasir.py

# ... (kode sebelumnya) ...

# Bagian ini ditambahkan setelah perhitungan total belanja
if total_belanja > 0: # Hanya proses pembayaran jika ada total belanja
    print("\n--- Proses Pembayaran ---")
    while True:
        try:
            uang_dibayar = int(input(f"Total yang harus dibayar: Rp{total_belanja:,}\nUang dibayar: Rp"))
            if uang_dibayar < total_belanja:
                print(f"Uang kurang Rp{(total_belanja - uang_dibayar):,}. Mohon tambahkan.")
            else:
                kembalian = uang_dibayar - total_belanja
                print(f"Kembalian: Rp{kembalian:,}")
                print("\nTerima kasih telah berbelanja!")
                break # Keluar dari loop pembayaran jika pembayaran cukup
        except ValueError:
            print("Input uang dibayar tidak valid. Harap masukkan angka.")

Penjelasan kode:

  • if total_belanja > 0:: Memastikan proses pembayaran hanya berjalan jika ada total belanja yang harus dibayar.
  • while True:: Loop untuk memastikan pembayaran yang diterima cukup.
  • try-except ValueError: Lagi-lagi, penanganan error untuk input uang yang dibayarkan.
  • if uang_dibayar < total_belanja:: Kondisi untuk memeriksa apakah uang yang dibayarkan kurang dari total belanja.
  • kembalian = uang_dibayar - total_belanja: Menghitung kembalian.

Jalankan kembali kasir.py dan selesaikan seluruh proses transaksi:

python3 kasir.py

Contoh output lengkap:

Selamat datang di Kasir Sederhana!
Daftar Produk:
- Kopi: Rp15,000
- Teh: Rp10,000
- Roti: Rp12,000
- Mie Instan: Rp5,000
- Air Mineral: Rp3,000

--- Masukkan Pesanan ---
Nama produk (ketik 'selesai' untuk checkout): kopi
Jumlah Kopi: 1
1 Kopi ditambahkan ke keranjang.

--- Masukkan Pesanan ---
Nama produk (ketik 'selesai' untuk checkout): mie instan
Jumlah Mie Instan: 2
2 Mie Instan ditambahkan ke keranjang.

--- Masukkan Pesanan ---
Nama produk (ketik 'selesai' untuk checkout): selesai

--- Rincian Belanja ---
------------------------------
Kopi (1x) @ Rp15,000 = Rp15,000
Mie Instan (2x) @ Rp5,000 = Rp10,000
------------------------------
Total Belanja: Rp25,000

--- Proses Pembayaran ---
Total yang harus dibayar: Rp25,000
Uang dibayar: Rp20000
Uang kurang Rp5,000. Mohon tambahkan.
Total yang harus dibayar: Rp25,000
Uang dibayar: Rp30000
Kembalian: Rp5,000

Terima kasih telah berbelanja!
💡 Tips: Kamu bisa menjadikan seluruh proses ini berjalan terus-menerus untuk melayani banyak transaksi dengan membungkus semua logika dari "selamat datang" hingga "terima kasih" dalam satu loop while True lagi, lalu menambahkan opsi untuk memulai transaksi baru atau keluar. Namun, untuk menjaga tutorial ini singkat dan fokus, kita akan menyelesaikannya di sini.

Error yang Sering Muncul dan Cara Mengatasinya

Sebagai pemula, kamu mungkin akan menemui beberapa error umum. Jangan khawatir, itu bagian dari proses belajar! Berikut beberapa yang sering terjadi:

ValueError: invalid literal for int() with base 10: '...'

Penyebab: Error ini muncul ketika kamu mencoba mengubah string yang bukan angka (misalnya "dua" atau "abc") menjadi integer menggunakan fungsi int(). Ini sering terjadi saat menerima input dari pengguna.

Solusi: Gunakan blok try-except ValueError seperti yang sudah kita terapkan di langkah 2 dan 4. Ini akan menangani input yang tidak valid dengan elegan tanpa menghentikan program.

try:
    jumlah = int(input("Masukkan angka: "))
except ValueError:
    print("Input tidak valid. Harap masukkan angka.")

KeyError: 'nama_produk_tidak_ada'

Penyebab: Error ini terjadi ketika kamu mencoba mengakses sebuah kunci (key) dalam dictionary yang tidak ada. Misalnya, kamu mencari daftar_produk["jus"] padahal "jus" tidak ada di daftar_produk.

Solusi: Selalu cek keberadaan kunci sebelum mencoba mengaksesnya. Kita sudah melakukannya dengan if nama_produk in daftar_produk:. Alternatif lain adalah menggunakan metode .get() yang akan mengembalikan None (atau nilai default yang kamu tentukan) jika kunci tidak ditemukan, bukan error.

# Solusi yang sudah dipakai:
if nama_produk in daftar_produk:
    # Lanjutkan proses
else:
    print("Produk tidak ditemukan.")

# Alternatif dengan .get():
harga = daftar_produk.get(nama_produk)
if harga is not None:
    # Produk ditemukan
else:
    print("Produk tidak ditemukan.")

IndentationError: expected an indented block

Penyebab: Python sangat ketat dengan indentasi (spasi atau tab di awal baris). Error ini muncul jika kamu memiliki blok kode (misalnya setelah if, for, while, atau definisi fungsi) tetapi tidak mengindentasinya dengan benar, atau ada ketidaksesuaian indentasi (misal, campuran spasi dan tab).

Solusi: Periksa kembali indentasimu. Pastikan semua baris dalam satu blok memiliki jumlah spasi (biasanya 4 spasi) atau tab yang konsisten. Kebanyakan editor kode modern akan otomatis membantu dengan indentasi.

Tips dan Best Practice

Berikut beberapa tips untuk mengembangkan aplikasi kasir ini lebih lanjut dan praktik terbaik dalam coding:

  • Modularisasi Kode dengan Fungsi: Untuk aplikasi yang lebih besar, pisahkan logika menjadi beberapa fungsi (misalnya, tampilkan_menu(), ambil_pesanan(), hitung_total(), proses_pembayaran()). Ini membuat kode lebih mudah dibaca, diuji, dan dikelola.
  • Validasi Input Lebih Lanjut: Selain memeriksa tipe data, kamu bisa menambahkan validasi lain. Misalnya, memastikan jumlah barang yang dimasukkan tidak negatif atau nol (sudah kita lakukan), atau memastikan nama produk tidak kosong.
  • Menggunakan Konstanta: Untuk nilai-nilai yang tidak berubah (seperti daftar produk), pertimbangkan untuk menyimpannya dalam variabel dengan nama huruf kapital (misalnya, DAFTAR_PRODUK) untuk menunjukkan bahwa itu adalah konstanta.
  • Tambahkan Komentar yang Jelas: Meskipun kode yang kita buat cukup sederhana, selalu biasakan untuk menambahkan komentar (diawali dengan #) untuk menjelaskan bagian-bagian kode yang kompleks atau kurang jelas. Ini sangat membantu saat kamu atau orang lain membaca ulang kodemu di kemudian hari.
  • Pembersihan Keranjang Otomatis: Jika kamu ingin aplikasi ini melayani transaksi berkelanjutan, pastikan untuk mengosongkan keranjang_belanja dan mereset total_belanja setelah setiap transaksi selesai, sebelum memulai transaksi baru.
💡 Tips: Untuk menjaga kode tetap bersih, hindari "magic numbers" (angka yang muncul entah dari mana). Jika ada pajak 10%, definisikan sebagai PAJAK_PPN = 0.10. Ini membuat kode lebih mudah dipahami dan diubah.

FAQ

Bagaimana cara menambahkan diskon ke aplikasi kasir ini?

Untuk menambahkan diskon, kamu bisa membuat sebuah fungsi baru yang menerima total belanja dan persentase diskon. Fungsi ini akan menghitung jumlah diskon dan menguranginya dari total belanja. Kamu bisa menambahkan opsi untuk menerapkan diskon sebelum proses pembayaran.

Bisakah data produk disimpan secara permanen agar tidak hilang saat program ditutup?

Tentu! Ada beberapa cara. Untuk project sederhana, kamu bisa menyimpan daftar produk ke file teks biasa, CSV (Comma Separated Values), atau JSON. Untuk aplikasi yang lebih serius, kamu akan menggunakan database seperti SQLite (yang sudah termasuk di Python), PostgreSQL, atau MySQL.

Apakah mungkin membuat aplikasi kasir ini dengan tampilan grafis (GUI)?

Sangat mungkin! Python memiliki beberapa library GUI yang populer, seperti Tkinter (yang sudah terpasang dengan Python), PyQt, atau Kivy. Dengan library ini, kamu bisa membuat jendela, tombol, input box, dan elemen visual lainnya untuk membuat aplikasi yang lebih interaktif dan menarik secara visual.

Kesimpulan

Selamat! Kamu telah berhasil menyelesaikan tutorial Python untuk pemula ini dan membangun sebuah aplikasi kasir sederhana yang berfungsi penuh. Kamu sudah belajar bagaimana mengelola data produk, menerima input dari pengguna, melakukan perhitungan, dan menangani alur transaksi dasar.

Ini adalah fondasi yang sangat bagus untuk proyek-proyek Python-mu selanjutnya. Dari sini, kamu bisa mengembangkan aplikasi kasir ini lebih jauh. Beberapa ide untuk langkah berikutnya:

  • Tambahkan Fitur Diskon atau Pajak: Coba implementasikan logika untuk memberikan diskon pada total belanja atau menambahkan pajak.
  • Simpan Riwayat Transaksi: Gunakan file teks atau modul json untuk menyimpan setiap transaksi yang selesai ke dalam sebuah file, sehingga kamu bisa melihat riwayat penjualan.
  • Manajemen Stok: Tambahkan jumlah stok untuk setiap produk dan kurangi stok setiap kali ada penjualan.
  • Tampilan Grafis (GUI): Jika kamu tertarik, pelajari library seperti Tkinter dan ubah aplikasi berbasis teks ini menjadi aplikasi dengan antarmuka grafis yang lebih menarik.

Teruslah berlatih, bereksperimen, dan jangan takut mencoba hal baru. Jika ada pertanyaan atau kamu menemui kesulitan, jangan ragu untuk bertanya di kolom komentar di bawah. Selamat ngoding!

Bahasa: ID ↑