Pemrograman Python: Dari Nol sampai Proyek Mini

Belum masuk. Progresmu tidak tersimpan.

Masuk
  • Bab 10 dari 11
  • 30 menit
  • 1 latihan kode
  • 4 soal kuis

Penanganan Error, Bekerja dengan File, dan Ekosistem Library

Di bab ini (8 bagian)
  1. Tujuan
  2. Exception: saat program tersandung
  3. try, except, else, finally
  4. Error yang sering muncul
  5. Bekerja dengan file
  6. Ekosistem library populer
  7. Kesalahan umum
  8. Rangkuman

Tujuan bab ini

  • Menangani exception dengan try, except, else, dan finally, serta membuat error sendiri dengan raise.
  • Mengenali error yang sering muncul dan membaca traceback untuk menemukan baris penyebabnya.
  • Membaca dan menulis file teks dengan with open(), mode r, w, a, dan encoding="utf-8".
  • Mengenal library populer Python dan bidang yang cocok untuk masing-masing.

Exception: saat program tersandung

Error yang muncul saat program sedang berjalan disebut exception. Tanpa penanganan, satu exception langsung menghentikan seluruh program. Bayangkan aplikasi kasir yang mati total hanya karena kasirnya mengetik huruf di kolom harga. Tidak lucu.

Python menyediakan try dan except supaya program bisa bereaksi dengan sopan dan tetap jalan.

try, except, else, finally

Kode try except dan daftar error yang sering muncul

Di deck, angkanya diambil dari input(). Di sini kita bungkus dalam fungsi supaya mudah dicoba dengan nilai langsung:

def bagi_sepuluh(teks):
    try:
        a = int(teks)
        hasil = 10 / a
    except ValueError:
        print("Harus berupa angka!")
    except ZeroDivisionError:
        print("Tidak bisa dibagi nol!")
    else:
        print("Hasil:", hasil)
    finally:
        print("Selesai.")

bagi_sepuluh("4")
bagi_sepuluh("abc")
bagi_sepuluh("0")

Output:

Hasil: 2.5
Selesai.
Harus berupa angka!
Selesai.
Tidak bisa dibagi nol!
Selesai.
BlokKapan dijalankan
trySelalu dicoba duluan
except NamaErrorHanya jika error jenis itu terjadi di try
elseHanya jika try selesai tanpa error
finallySelalu, ada error atau tidak

finally cocok untuk pekerjaan "beres-beres", misalnya menutup koneksi atau mencetak log. Tulis except dengan jenis error yang spesifik. except: tanpa nama memang menangkap semuanya, tapi juga menyembunyikan bug yang seharusnya kamu lihat.

Error yang sering muncul

ErrorPenyebabContoh pemicu
SyntaxErrorPenulisan kode salahprint("halo" (kurung tidak ditutup)
NameErrorVariabel belum dibuatprint(skor) sebelum skor ada
TypeErrorTipe data tidak cocok"5" + 3
ValueErrorNilai tidak valid untuk operasiint("abc")
IndexErrorIndeks di luar jangkauan[1, 2, 3][5]
KeyErrorKunci dictionary tidak ada{"a": 1}["b"]

Satu catatan: SyntaxError muncul sebelum program sempat berjalan, jadi tidak bisa ditangkap oleh try di file yang sama. Perbaiki penulisannya.

Membuat error sendiri dengan raise

Kadang kamu sendiri yang perlu menolak nilai yang tidak masuk akal. Gunakan raise:

def atur_umur(umur):
    if umur < 0:
        raise ValueError("Umur tidak boleh negatif")
    return umur

try:
    atur_umur(-3)
except ValueError as e:
    print("Gagal:", e)

Output:

Gagal: Umur tidak boleh negatif

Dengan as e, kamu mendapat objek error dan bisa menampilkan pesannya.

Membaca traceback

Saat error tidak ditangani, Python mencetak traceback. Jangan panik, baca dari bawah ke atas:

Traceback (most recent call last):
  File "nilai.py", line 2, in <module>
    print(nilai[5])
IndexError: list index out of range
  1. Baris terakhir memberi tahu jenis dan pesan error: IndexError, indeks di luar jangkauan.
  2. Baris di atasnya menunjukkan file dan nomor baris: nilai.py, baris 2.
  3. Baris kode yang ditampilkan adalah penyebabnya: nilai[5].

Python versi baru kadang menambahkan tanda ^ di bawah bagian yang bermasalah supaya lebih mudah ditemukan.

Bekerja dengan file

Program sering perlu menyimpan data supaya tidak hilang saat ditutup. Cara paling aman adalah with open(), karena file otomatis ditutup walaupun terjadi error di tengah jalan.

# menulis file
with open("catatan.txt", "w", encoding="utf-8") as f:
    f.write("Belajar Python\n")
    f.write("Hari ke-1\n")

# membaca file baris demi baris
with open("catatan.txt", "r", encoding="utf-8") as f:
    for baris in f:
        print(baris.strip())

Output:

Belajar Python
Hari ke-1
ModeNamaPerilaku
"r"ReadMembaca, mode default. Error jika file tidak ada
"w"WriteMenulis, menimpa seluruh isi lama
"a"AppendMenambah di akhir, isi lama tetap

Beberapa hal kecil yang penting:

  • write() tidak menambahkan baris baru otomatis, jadi tulis \n sendiri.
  • Setiap baris yang dibaca masih membawa \n di ujungnya. strip() membuang spasi dan baris baru di awal dan akhir teks.
  • Tambahkan encoding="utf-8" supaya huruf seperti "é" atau emoji tidak berubah jadi karakter aneh di komputer lain.

File dan error sering bertemu. Membuka file yang tidak ada dengan mode "r" memunculkan FileNotFoundError, yang bisa kamu tangkap dengan except FileNotFoundError:.

Ekosistem library populer

Kekuatan besar Python ada di library pihak ketiga yang dipasang dengan pip install. Setelah dasar kuat, pilih sesuai bidang yang ingin kamu dalami.

LibraryFungsiPasang
PandasAnalisis data tabelpip install pandas
NumPyKomputasi numerikpip install numpy
MatplotlibGrafik dan visualisasipip install matplotlib
scikit-learnMachine learningpip install scikit-learn
DjangoFramework web lengkappip install django
FlaskFramework web ringanpip install flask
FastAPIMembuat API cepatpip install fastapi
RequestsAkses HTTP dan APIpip install requests

Tertarik data? Mulai dari Pandas, NumPy, dan Matplotlib. Mau bikin web? Coba Flask dulu karena ringan, lalu Django atau FastAPI.

Kesalahan umum

  • Memakai mode "w" padahal ingin menambah data. Isi lama langsung hilang, pakai "a".
  • Menulis except: kosong untuk semua kasus, sehingga bug lain ikut tersembunyi.
  • Lupa strip(), lalu heran kenapa "Ani\n" == "Ani" bernilai False.
  • Membaca traceback dari atas dan bingung. Mulailah dari baris paling bawah.
  • Membuka file tanpa with, lalu lupa memanggil close().

Rangkuman

  • Exception adalah error saat program berjalan, dan try/except mencegah program berhenti mendadak.
  • else jalan jika tidak ada error, finally selalu jalan, dan raise membuat error sendiri.
  • Error umum: SyntaxError, NameError, TypeError, ValueError, IndexError, KeyError. Baca traceback dari bawah.
  • with open(nama, mode, encoding="utf-8") menutup file otomatis. Mode r membaca, w menimpa, a menambah.
  • Library populer seperti Pandas, NumPy, Matplotlib, scikit-learn, Django, Flask, FastAPI, dan Requests dipasang dengan pip install.

Selesaikan bab ini

  1. 1. Baca materi
  2. 2. Latihan kode (1)
  3. 3. Kuis (4 soal)

Latihan kode: Membaca data nilai dari file

Buat fungsi baca_nilai(f). Parameter f adalah objek file yang sudah dibuka (di pemeriksaan dipakai io.StringIO), berisi baris seperti Ani,88.

  • Kembalikan dictionary {nama: nilai} dengan nilai bertipe float.
  • Buang spasi dan baris baru dengan strip(), lewati baris kosong.
  • Baris yang rusak (nilai bukan angka atau tanpa koma) dilewati memakai try/except ValueError.

Contoh: baca_nilai(io.StringIO("Ani,88\nCitra,abc\n")) menghasilkan {"Ani": 88.0}.

Cek pemahaman

  1. 1Apa yang dicetak kode berikut?

    try:
        x = int("7")
    except ValueError:
        print("A")
    else:
        print("B")
    finally:
        print("C")
  2. 2Mode `open()` mana yang menambah isi di akhir file tanpa menghapus isi lama?

  3. 3Blok `finally` hanya dijalankan jika tidak terjadi error di blok `try`.

  4. 4Kode `stok = {"apel": 5}` lalu `stok["jeruk"]` memunculkan error apa?