Memahami Operator Persen (%) di Python

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.

1. Operator Modulo (%)

Fungsi yang paling umum dan universal dari operator % di Python adalah sebagai operator modulo. Operator ini digunakan untuk menghitung sisa pembagian dari dua angka.

Cara Kerja Modulo

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
        

Aplikasi Praktis Modulo

Operator modulo sangat berguna dalam berbagai skenario pemrograman:

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
        

2. Operator Persen dalam String Formatting (Metode Lama)

Sebelum diperkenalkannya metode .format() dan f-strings (sejak Python 3.6), operator % digunakan untuk melakukan interpolasi string, mirip dengan fungsi printf dalam bahasa C.

Sintaks dan Penggunaan

Dalam konteks ini, simbol % diikuti oleh kode tipe data tertentu yang menunjukkan jenis variabel yang akan dimasukkan ke dalam string:


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.

Visualisasi Operator Modulo

Visualisasi Operator Modulo: 10 dibagi 3 menyisakan 1 10 % 3 Pembilang (10): Pembagi (3): x 3 Sisa! Sisa = 1

Perbandingan: Modulo vs. Pembagian Float

Penting untuk membedakan antara operator modulo (%) dan operator pembagian standar (/ atau //).


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)
        

Penanganan Bilangan Negatif

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.