Anda sudah bisa menghitung banyak data dengan for loop dan fungsi. Pertanyaan berikutnya yang sering muncul di praktikum: bagaimana menampilkan hasilnya sebagai tabel yang rapi? Artikel ini menjawabnya secara bertahap — mulai dari fitur bawaan Python, lalu (opsional) library
tabulate — sekaligus mengupas satu pesan error yang sangat sering dijumpai pemula.
Masalah: Dua List, Ingin Jadi Tabel
Misalkan kita punya daftar suhu dalam Celsius dan hasil konversinya ke Kelvin:
suhu_c = [25, 100, 250, 350]
suhu_k = [t + 273.15 for t in suhu_c]
print(suhu_k)
# [298.15, 373.15, 523.15, 623.15]
Keduanya adalah dua list terpisah — seperti dua kolom. Tujuan kita: menampilkannya berdampingan sebagai baris-baris tabel. Bagaimana memasangkan elemen yang bersesuaian?
zip(): Memasangkan Elemen
Fungsi zip() memasangkan elemen ke-1 dari tiap list, lalu ke-2, dan seterusnya.
data = list(zip(suhu_c, suhu_k))
print(data)
# [(25, 298.15), (100, 373.15), (250, 523.15), (350, 623.15)]
Hasilnya sebuah list berisi tuple. Kini setiap tuple mewakili satu baris tabel: (Celsius, Kelvin). Data ini siap ditampilkan baris demi baris.
Cara Bawaan: for + zip + f-string
Untuk pemula, cara terbaik menampilkan tabel adalah dengan fitur bawaan Python saja — tanpa memasang apa pun. Gabungkan for, zip, dan f-string dengan pengaturan lebar kolom.
print(f"{'Suhu (°C)':<12}{'Suhu (K)':<12}")
for c, k in zip(suhu_c, suhu_k):
print(f"{c:<12}{k:<12.2f}")
Keluarannya berupa kolom yang lurus:
Suhu (°C) Suhu (K)
25 298.15
100 373.15
250 523.15
350 623.15
Bagian {c:<12} memberi lebar kolom 12 karakter dengan perataan kiri, sehingga kolom tersusun rapi. Sementara {k:<12.2f} sekaligus membulatkan ke 2 angka desimal. Sekali jalan, teknik ini melatih empat konsep dasar: for, zip, f-string, dan string formatting.
String Formatting: Perataan & Lebar
Pola umum format di dalam f-string adalah {nilai:[perataan][lebar][.presisi][tipe]}. Berikut yang paling sering dipakai:
| Format | Arti | Contoh hasil |
|---|---|---|
{x:<8} | rata kiri, lebar 8 | [42 ] |
{x:>8} | rata kanan, lebar 8 | [ 42] |
{x:^8} | rata tengah, lebar 8 | [ 42 ] |
{x:.2f} | 2 angka desimal | 3.14 |
Memasang Library dengan pip
Kadang kita ingin memakai library pihak ketiga (di luar Python bawaan). Library seperti itu harus dipasang lebih dulu memakai pip.
# di terminal / Anaconda Prompt:
pip install tabulate
# alternatif dengan conda:
conda install -c conda-forge tabulate
# di dalam sel Jupyter, pakai tanda seru:
!pip install tabulate
pip install <nama> mengunduh paket dari PyPI (gudang paket Python) dan cukup dijalankan sekali per environment. Perhatikan: perintah pip dijalankan di terminal/Anaconda Prompt, bukan di dalam berkas .py biasa.
tabulate: Tabel Instan
Setelah terpasang, tabulate membuat tabel rapi secara otomatis. Kuncinya: data yang diberikan harus berupa baris (list of tuple) — dan di sinilah zip() berguna.
from tabulate import tabulate
data = list(zip(suhu_c, suhu_k))
headers = ["Suhu (°C)", "Suhu (K)"]
print(tabulate(data, headers=headers, tablefmt="fancy_grid"))
Keluarannya:
╒═════════════╤════════════╕
│ Suhu (°C) │ Suhu (K) │
╞═════════════╪════════════╡
│ 25 │ 298.15 │
├─────────────┼────────────┤
│ 100 │ 373.15 │
├─────────────┼────────────┤
│ 250 │ 523.15 │
├─────────────┼────────────┤
│ 350 │ 623.15 │
╘═════════════╧════════════╛
Parameter tablefmt mengatur gaya bingkai — selain fancy_grid, ada grid, github, plain, dan lainnya.
Debugging: 'int' object is not iterable
Ini kesalahan yang hampir semua pemula temui. Perhatikan versi yang salah dan yang benar:
# SALAH: melewatkan suhu_c (isinya bilangan int)
print(tabulate(suhu_c, headers=headers, tablefmt="fancy_grid"))
TypeError: 'int' object is not iterable
# BENAR: melewatkan data (hasil zip)
print(tabulate(data, headers=headers, tablefmt="fancy_grid"))
Mengapa error muncul? tabulate() mengharap setiap baris berupa iterable (list atau tuple). Namun suhu_c berisi bilangan int seperti 25 dan 100 — dan sebuah int bukan iterable. Solusinya: lewatkan data (hasil zip yang berupa list of tuple), bukan suhu_c.
TypeError) dan penyebabnya ('int' object is not iterable) secara cukup gamblang — itu petunjuk paling cepat untuk memperbaiki kode.Bawaan Dulu, Library Kemudian
Karena ini kursus Python untuk mahasiswa sains dan teknik, sebaiknya tabulate (dan pandas) tidak diperkenalkan di minggu-minggu awal — keduanya menambah dependensi yang harus dipasang.
Prinsipnya: kuasai dulu fitur bawaan Python (for, zip, f-string, string formatting) untuk menyajikan data. Setelah mahasiswa nyaman dengan konsep dasar ini, barulah perkenalkan library seperti tabulate atau pandas sebagai alat yang mempermudah — bukan pengganti pemahaman.
Penutup
Menyajikan data dengan rapi ternyata bisa dilakukan hanya dengan fitur bawaan Python. Ketika kebutuhan meningkat, library seperti tabulate siap membantu — asalkan kita paham cara menyiapkan datanya (ingat zip!) dan cara membaca pesan error.
Ingin mengulang dasar-dasar loop dan fungsinya? Baca artikel pendamping: Fungsi, For Loop, dan Kondisional di Python untuk Sains. Untuk soal format angka & satuan, lihat pula: Angka Penting di Python: Menampilkan Hasil Hitung dengan f-string.
Catatan: seluruh contoh kode ditulis untuk Python 3 seperti spyder di Anaconda Navigator. Contoh tabulate memerlukan pemasangan paket terlebih dahulu; contoh lainnya berjalan tanpa library tambahan.
File Download: --File Download PDF--
