Tantangan Coding: Keamanan Program
Di pelajaran Kasir sebelumnya, kita menggunakan int(input()) untuk meminta angka dari pembeli.
Tapi, bagaimana jika pembeli iseng mengetik huruf "Sepuluh" (teks) padahal program meminta angka?
BUM! Program akan CRASH! Muncul peringatan merah besar ValueError dan aplikasi langsung tertutup paksa. Kita tidak boleh membiarkan ini terjadi pada aplikasi buatan kita!
Di Python, kita bisa menangkap *error* sebelum ia menghancurkan program menggunakan try...except.
try: (COBA) Jalankan kode yang rawan error ini.except: (KECUALI JIKA) Jika terjadi error di dalam "try", jangan crash! Tapi lakukan perintah cadangan ini.try:
# Zona Berbahaya (Kode yang bisa error)
angka = int(input("Ketik angka: "))
except ValueError:
# Airbag mengembang! (Menangkap error salah ketik)
print("Hei! Kamu harus mengetik ANGKA!")
Misi: Lindungi program dari pembeli yang iseng mengetik huruf saat diminta memasukkan uang pembayaran!
print("=== KASIR AMAN ===")
# Mulai blok perlindungan
____:
uang = int(input("Masukkan uang (Rp): "))
print("Uang diterima:", uang)
# Tangkap error jika inputnya bukan angka
____ ValueError:
print("TRANSAKSI GAGAL!")
print("Tolong ketik angka, jangan huruf!")
Petunjuk: Isi dengan dua kata ajaib pelindung error.
Misi: Jika pembeli salah ketik, program tidak boleh berhenti. Gunakan `while True` agar program terus bertanya sampai pembeli memasukkan angka yang benar (lalu gunakan `break`!).
while ____:
try:
umur = ____(input("Berapa umurmu? "))
# Jika baris di atas BERHASIL (tidak error),
# maka hancurkan loop ini!
print("Umur tersimpan!")
____
except ____:
# Jika error, loop akan berputar ulang dari atas!
print("Error: Wajib menggunakan ANGKA!")
Kalian sudah belajar segalanya! Sekarang, buka Editormu dan selesaikan tantangan ini (tanpa contekan penuh):
Misi Kalkulator Anti-Error:
while True untuk perulangan.Angka Pertama dan Angka Kedua (ubah ke int).hasil = Angka Pertama / Angka Kedua, lalu di-print.ValueError (jika diisi huruf).ZeroDivisionError (jika Angka Kedua adalah 0, karena angka tidak bisa dibagi nol!)."Programmer sejati adalah mereka yang bersiap menghadapi kemungkinan terburuk dari user!"