Dalam dunia pemrograman Python, simbol persen (%) seringkali membingungkan bagi pemula. Simbol ini memiliki dua fungsi utama yang sangat berbeda tergantung pada konteks penggunaannya: sebagai operator modulo dan sebagai bagian dari string formatting lama (format specifier).
Memahami kedua fungsi ini sangat krusial untuk menulis kode yang efisien dan bebas bug. Mari kita telaah secara mendalam bagaimana operator persen bekerja di Python.
%)Fungsi yang paling umum dan universal dari operator % di Python adalah sebagai operator modulo. Operator ini digunakan untuk menghitung sisa pembagian dari dua angka.
Ketika Anda membagi bilangan bulat A dengan bilangan bulat B (A % B), hasilnya adalah sisa yang tersisa setelah A dibagi habis oleh B sebanyak mungkin.
Contoh sederhana:
print(10 % 3) # Hasilnya 1, karena 10 = 3 * 3 + 1
print(15 % 5) # Hasilnya 0, karena 15 habis dibagi 5
print(7 % 10) # Hasilnya 7, karena 7 lebih kecil dari 10
Operator modulo sangat berguna dalam berbagai skenario pemrograman:
angka % 2 == 0, maka angka tersebut genap.Sebagai contoh kasus ganjil/genap:
angka = 23
if angka % 2 == 0:
print(f"{angka} adalah bilangan genap")
else:
print(f"{angka} adalah bilangan ganjil")
# Output: 23 adalah bilangan ganjil
Sebelum diperkenalkannya metode .format() dan f-strings (sejak Python 3.6), operator % digunakan untuk melakukan interpolasi string, mirip dengan fungsi printf dalam bahasa C.
Dalam konteks ini, simbol % diikuti oleh kode tipe data tertentu yang menunjukkan jenis variabel yang akan dimasukkan ke dalam string:
%s: Untuk string (atau objek apa pun yang dapat dikonversi menjadi string).%d atau %i: Untuk bilangan bulat (integer).%f: Untuk bilangan pecahan (float).
nama = "Budi"
umur = 30
tinggi = 175.5
# Menggunakan operator % untuk formatting
kalimat = "Halo, nama saya %s. Saya berusia %d tahun dan tinggi saya %.1f cm." % (nama, umur, tinggi)
print(kalimat)
# Output: Halo, nama saya Budi. Saya berusia 30 tahun dan tinggi saya 175.5 cm.
Meskipun metode ini masih berfungsi, pengembang Python modern sangat menganjurkan untuk beralih ke f-strings karena dianggap lebih mudah dibaca, lebih cepat, dan lebih aman.
Penting untuk membedakan antara operator modulo (%) dan operator pembagian standar (/ atau //).
/): Selalu menghasilkan angka pecahan (float), bahkan jika hasilnya bulat.//): Menghasilkan hasil bagi terdekat tanpa sisa (pembulatan ke bawah).%): Hanya menghasilkan sisa pembagian.
a = 17
b = 5
print(f"Pembagian Float (a / b): {a / b}") # 3.4
print(f"Pembagian Integer (a // b): {a // b}") # 3
print(f"Modulo (a % b): {a % b}") # 2 (karena 17 = 3*5 + 2)
Ketika berhadapan dengan bilangan negatif, perilaku operator modulo di Python sedikit berbeda dari beberapa bahasa lain. Python selalu memastikan bahwa tanda dari hasil modulo sama dengan tanda pembaginya (divisor).
# Kasus 1: Pembilang Negatif, Pembagi Positif
print(-10 % 3) # Hasil: 2 (Karena -10 = -4 * 3 + 2)
# Kasus 2: Pembilang Positif, Pembagi Negatif
print(10 % -3) # Hasil: -2 (Karena 10 = -3 * -3 + (-2))
# Kasus 3: Keduanya Negatif
print(-10 % -3) # Hasil: -1 (Karena -10 = 3 * -3 + (-1))
Kesimpulannya, operator persen (%) di Python adalah alat yang kuat. Jika Anda tidak sedang memformat string gaya lama, hampir pasti Anda menggunakannya untuk menemukan sisa pembagian, sebuah operasi fundamental dalam logika komputasi.