Setelah mengenal variabel dan tipe data, sebuah program masih terasa seperti kalkulator sekali pakai. Agar Python benar-benar menjadi alat kerja ilmiah, kita perlu empat kemampuan berikut: menyimpan banyak data, membungkus rumus menjadi fungsi, mengulang perhitungan, dan mengambil keputusan. Inilah inti pembahasan kita kali ini, lengkap dengan contoh dari fisika, kimia, dan ilmu material.
List: Menyimpan Banyak Nilai
Sebuah list menyimpan banyak nilai dalam satu wadah, ditulis dalam kurung siku dan dipisah koma. Kita mengakses elemennya lewat indeks yang dimulai dari 0.
puncak = [28.4, 32.2, 45.5, 56.6] # posisi puncak grafik
print(peaks[0]) # 28.4 (elemen pertama, indeks 0)
print(peaks[-1]) # 56.6 (elemen terakhir)
print(peaks[1:3]) # [32.2, 45.5] (slicing)
peaks[0] = 28.5 # list bisa diubah (mutable)
Beberapa hal penting: indeks negatif menghitung dari belakang (-1 = terakhir), slicing [start:end] mengambil sebagian list (nilai end tidak ikut), dan berbeda dari string, isi list dapat diubah setelah dibuat.
Meringkas Data dengan Fungsi Bawaan
Python menyediakan fungsi siap pakai untuk meringkas sekumpulan data — sangat berguna untuk mengolah hasil pengukuran.
massa = [2.0, 3.5, 1.8, 4.2] # gram
print(len(massa)) # 4 jumlah data
print(sum(massa)) # 11.5 total
rata = sum(massa) / len(massa)
print(rata) # 2.875
print(sorted(massa)) # [1.8, 2.0, 3.5, 4.2]
Dengan len, sum, max, min, dan sorted, kita bisa menghitung jumlah data, total, nilai ekstrem, rata-rata, dan mengurutkan data hanya dalam beberapa baris.
Membuat Fungsi Sendiri dengan def
Agar sebuah rumus bisa dipakai berulang, kita membungkusnya menjadi fungsi. Contoh: posisi partikel yang bergerak dengan kecepatan awal v0 dan percepatan a pada waktu t, yaitu y = v0·t + ½·a·t².
def posisi(v0, a, t):
y = v0*t + 0.5*a*t**2
return y
p = posisi(2, 1, 3)
print(p) # 10.5
Kata kunci def menandai awal fungsi; v0, a, t adalah argumen (nilai yang dikirim saat fungsi dipanggil); dan return mengirim hasilnya kembali ke kode pemanggil.
Aturan indentasi & titik dua. Python menandai blok kode dengan indentasi (menjorok ke dalam), bukan kurung kurawal. Baris sebelum blok harus diakhiri titik dua ( : ), dan isi blok ditulis menjorok konsisten (biasanya 4 spasi). Lupa titik dua atau indentasi yang tidak seragam akan memunculkan IndentationError.
Fungsi singkat: lambda
Untuk rumus sederhana yang bergantung pada satu variabel, ada bentuk ringkas bernama lambda.
posisi = lambda t: 1*t + 0.5*2*t**2
print(posisi(3)) # 12.0
Mengulang dengan For Loop
Sering kali kita perlu menghitung sesuatu untuk banyak nilai sekaligus. Di sinilah for loop berperan: ia menjalankan blok kode berulang kali.
hasil = [] # list kosong sebagai wadah
for t in range(4): # t = 0, 1, 2, 3
hasil.append(posisi(1, 2, t))
print(hasil) # [0.0, 2.0, 6.0, 12.0]
range(4) menghasilkan barisan 0, 1, 2, 3. Pada tiap putaran, nilai posisi ditambahkan (append) ke ujung list. Hasilnya: posisi partikel pada empat waktu sekaligus.
Mengambil Keputusan: if / elif / else
Untuk menjalankan kode hanya bila kondisi tertentu terpenuhi, kita memakai if, elif, dan else. Contoh berikut menggolongkan material dari nilai band gap-nya.
Eg = 1.1 # band gap (eV) — silikon
if Eg == 0:
jenis = "konduktor"
elif Eg < 3:
jenis = "semikonduktor"
else:
jenis = "isolator"
print(jenis) # semikonduktor
if menguji sebuah kondisi; bila benar, bloknya dijalankan. elif menguji kondisi lain bila yang pertama salah, dan else menangani sisanya. Perhatikan: == berarti "sama dengan", sedangkan < berarti "kurang dari".
Menggabung for loop dan if
Kita bisa meletakkan if di dalam for untuk menyaring nilai — misalnya, hanya menyimpan posisi yang kurang dari 7.
hasil = []
for t in range(4):
y = 1*t + 0.5*2*t**2
if y < 7: # saring: simpan hanya jika < 7
hasil.append(y)
print(hasil) # [0.0, 2.0, 6.0]
Perhatikan indentasi bertingkat: isi if menjorok lebih dalam lagi. Nilai pada t = 3 adalah 12 (≥ 7), sehingga tidak ikut tersimpan.
Argumen Default
Sebuah fungsi bisa memiliki argumen dengan nilai default. Jika argumen itu tidak diisi saat memanggil, nilai default yang dipakai.
def posisi(v0, t, a=2): # a default = 2
return v0*t + 0.5*a*t**2
print(posisi(1, 3)) # 12.0 (pakai a=2)
print(posisi(1, 3, 3)) # 16.5 (a diganti 3)
Argumen tanpa default harus ditulis lebih dulu dan wajib diisi; argumen ber-default boleh dihilangkan saat memanggil.
Latihan Lintas-Disiplin
Gabungkan semuanya dalam tiga latihan singkat yang relevan dengan bidang fisika, kimia, dan material.
1. Fisika — energi kinetik untuk beberapa kecepatan
def energi_kinetik(m, v):
return 0.5 * m * v**2
for v in [5, 10, 15]:
print(v, energi_kinetik(2.0, v))
# 5 25.0
# 10 100.0
# 15 225.0
2. Kimia — mengencerkan & merata-rata konsentrasi
konsentrasi = [0.10, 0.25, 0.40, 0.55] # mol/L
encer = [c/2 for c in konsentrasi] # diencerkan 2x
print(encer) # [0.05, 0.125, 0.2, 0.275]
rata = sum(konsentrasi) / len(konsentrasi)
print(rata) # 0.325
3. Ilmu Material — menggolongkan beberapa bahan
bahan = [("Cu", 0.0), ("Si", 1.1), ("SiO2", 9.0)]
for nama, Eg in bahan:
if Eg == 0:
jenis = "konduktor"
elif Eg < 3:
jenis = "semikonduktor"
else:
jenis = "isolator"
print(nama, "->", jenis)
# Cu -> konduktor
# Si -> semikonduktor
# SiO2 -> isolator
Perhatikan bahwa tiap bahan disimpan sebagai tuple (nama, band_gap), dan for nama, Eg in bahan membongkar (unpack) tiap tuple sekaligus.
Penutup
Dengan list, fungsi bawaan, fungsi buatan sendiri (def dan lambda), for loop, dan kondisional, kita sudah bisa menulis program sains yang nyata — bukan sekadar hitungan sekali jalan. Empat konsep ini adalah tulang punggung hampir semua kode ilmiah.
Setelah bisa menghitung banyak data, pertanyaan berikutnya: bagaimana menampilkannya secara rapi? Itu kita bahas di artikel lanjutan: Menyajikan Data dengan Rapi: zip, f-string, dan tabulate. Belum membaca dasarnya? Mulai dari Mengenal Variabel dan Tipe Data di Python untuk Sains.
Catatan: seluruh contoh kode ditulis untuk Python 3 dan bisa langsung dijalankan di Spyder atau Jupyter Notebook (lewat Anaconda) maupun di interpreter Python biasa.
File Download: --File Download PDF--
