Lewati ke konten utama

Operator Modulo di Python: Memahami Konsep Utama

Pelajari cara menggunakan operator modulo (%) di Python untuk menyelesaikan masalah dunia nyata, dari mengecek bilangan genap/ganjil hingga kriptografi, atau struktur data siklik.
Diperbarui 28 Sep 2026  · 9 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Operator modulo (%) di Python adalah operator aritmetika fundamental yang digunakan untuk menentukan sisa dari sebuah operasi pembagian. Meskipun konsepnya sederhana, operator ini memegang peran penting dalam berbagai aplikasi pemrograman. Mulai dari mengecek apakah suatu bilangan genap atau ganjil hingga melakukan perputaran melalui urutan dan menentukan tahun kabisat, menguasai operator modulo dapat meningkatkan kemampuan pemecahan masalah Anda di Python.

Memahami operator modulo penting karena sering muncul dalam:

  • Mengenali bilangan genap dan ganjil
  • Melakukan perulangan elemen secara siklik
  • Menerapkan perhitungan matematis dalam aritmetika modular
  • Aplikasi dunia nyata seperti perhitungan tanggal, kriptografi, dan logika gim.

Dalam blog ini, saya akan memberikan panduan komprehensif untuk menggunakan operator modulo di Python, mencakup sintaks, perilaku dengan berbagai tipe bilangan, use case, dan contoh praktis. Jika Anda baru di Python, pertimbangkan untuk mengikuti kursus Introduction to Python kami. 

Apa itu Operator Modulo di Python?

Operator modulo (%) menghitung sisa pembagian antara dua bilangan. Diberikan dua bilangan a (dividen) dan b (divisor), operasi modulo mengembalikan sisa ketika a dibagi dengan b.

Latar belakang matematis

Modulo berakar pada aritmetika modular, sebuah sistem aritmetika untuk bilangan bulat di mana angka-angka akan "berputar kembali" setelah mencapai nilai tertentu (modulus). Ini banyak digunakan dalam kriptografi, hashing, dan komputasi siklik.

Bayangkan jam 12-jam: setelah 12, alih-alih berlanjut ke 13, kita kembali ke 1. Ini pada dasarnya adalah aritmetika modular dengan modulus 12:

  • 13 % 12 = 1, artinya pukul 13 setara dengan pukul 1 dalam format 12 jam.

Sintaks dan Penggunaan Dasar Modulo di Python

Di Python, operator modulo mengikuti sintaks yang sederhana:

remainder = dividend % divisor

Mari lihat beberapa contoh dasar:

# Basic modulo operations
print(7 % 3)     
print(15 % 4)   
print(20 % 5)  
1 
3 
0 

Saat kita membagi 7 dengan 3, kita mendapatkan 2 dengan sisa 1. Operator modulo memberikan sisa tersebut. Demikian juga, 15 dibagi 4 menghasilkan 3 dengan sisa 3, dan 20 dibagi 5 menghasilkan tepat 4 tanpa sisa.

Bekerja dengan Bilangan Bulat

Sekarang kita memahami dasar-dasar operator modulo, mari kita telusuri bagaimana perilakunya dengan bilangan bulat.

Modulo dengan bilangan bulat positif

Bekerja dengan bilangan bulat positif adalah use case paling langsung untuk operator modulo:

# Examples with positive integers
print(10 % 3)      
print(25 % 7)     
print(100 % 10)  
1 
4 
0 

Dalam contoh-contoh ini, kita dapat menghitung hasilnya dengan mencari berapa kali pembagi masuk ke dalam dividen lalu menentukan sisanya:

  • 10 ÷ 3 = 3 sisa 1, jadi 10 % 3 = 1
  • 25 ÷ 7 = 3 sisa 4, jadi 25 % 7 = 4
  • 100 ÷ 10 = 10 sisa 0, jadi 100 % 10 = 0

Modulo dengan bilangan bulat negatif

Perilaku operator modulo menjadi lebih menarik saat bekerja dengan bilangan negatif. Python mengikuti aturan khusus: hasil dari a % b selalu memiliki tanda yang sama dengan b (pembagi).

# Examples with negative integers
print(-10 % 3)    
print(10 % -3)    
print(-10 % -3) 
2 
-2 
-1 

Hasil ini mungkin tampak tidak intuitif pada awalnya, tetapi mengikuti aturan yang konsisten:

  1. Untuk -10 % 3: Alih-alih mendapatkan -1 (yang mungkin diharapkan jika berpikir -10 ÷ 3 = -3 sisa -1), Python mengembalikan 2. Ini karena Python mencari nilai antara 0 dan 3 (eksklusif) yang, ketika ditambahkan ke kelipatan 3, menghasilkan -10. Jawabannya adalah 2, karena -12 + 2 = -10.
  2. Untuk 10 % -3: Hasilnya memiliki tanda yang sama dengan pembagi (-3), sehingga kita mendapatkan -2. Ini karena 10 = (-3) × (-4) + (-2).
  3. Untuk -10 % -3: Hasilnya adalah -1, karena -10 = (-3) × 3 + (-1).

Memahami bagaimana Python menangani bilangan negatif dalam operasi modulo penting saat bekerja dengan komputasi siklik, seperti:

  • Menerapkan fungsi hashing
  • Menyelesaikan masalah yang melibatkan aritmetika jam
  • Menangani logika pengindeksan negatif dalam list

Menggunakan Modulo dengan Bilangan Pecahan (Floating-Point)

Operator modulo Python tidak terbatas pada bilangan bulat; operator ini juga berfungsi dengan bilangan pecahan:

# Modulo with floating-point numbers
print(7.5 % 2)     
print(9.7 % 4.2)  
print(5.0 % 0.2)  
1.5
1.299999999999999
0.19999999999999973

Dengan bilangan pecahan, operasi modulo mengikuti prinsip yang sama: mengembalikan sisa setelah pembagian. Namun, karena cara bilangan pecahan disimpan di komputer (format IEEE 754), kesalahan pembulatan kecil dapat terjadi.

Sebagai contoh, alih-alih 1.3, Python mengembalikan 1.299999999999999, dan alih-alih 0.2, Python mengembalikan 0.19999999999999973. Ketidakakuratan kecil ini umum dalam aritmetika floating-point dan perlu dipertimbangkan saat melakukan perhitungan presisi.

Python juga menyediakan fungsi math.fmod() dari modul math sebagai alternatif untuk operasi modulo floating-point, yang mungkin menangani kasus tepi tertentu secara berbeda:

import math

print(math.fmod(7.5, 2))    
print(math.fmod(-7.5, 2))  

# Compare with Python's modulo operator 
print(-7.5 % 2) 
1.5
-1.5
0.5

Perbedaan utama antara % dan math.fmod() terletak pada cara mereka menangani bilangan negatif. Sementara % memastikan hasil memiliki tanda yang sama dengan pembagi dan mengembalikan nilai dalam rentang [0, pembagi), math.fmod() memastikan hasil memiliki tanda yang sama dengan dividen. Perbedaan ini penting dalam aplikasi di mana tanda sisa berpengaruh.

Jadi kapan Anda harus menggunakan % dibandingkan math.fmod()?

  • Gunakan % saat Anda memerlukan perilaku tanda yang konsisten (misalnya, berputar dalam sebuah rentang).
  • Gunakan math.fmod() saat tanda dividen harus dipertahankan, seperti dalam simulasi fisika atau fungsi matematis.

Menangani Bilangan Negatif pada Modulo Python

Seperti yang telah kita lihat pada contoh sebelumnya, implementasi operator modulo Python dengan bilangan negatif mungkin tidak sesuai dengan intuisi awal. Mari kita telusuri perilaku ini secara lebih sistematis:

# Understanding the pattern with negative numbers
for i in range(-10, 11):
    result = i % 3
    print(f"{i} % 3 = {result}")
-10 % 3 = 2
-9 % 3 = 0
-8 % 3 = 1
-7 % 3 = 2
-6 % 3 = 0
-5 % 3 = 1
-4 % 3 = 2
-3 % 3 = 0
-2 % 3 = 1
-1 % 3 = 2
0 % 3 = 0
1 % 3 = 1
2 % 3 = 2
3 % 3 = 0
4 % 3 = 1
5 % 3 = 2
6 % 3 = 0
7 % 3 = 1
8 % 3 = 2
9 % 3 = 0
10 % 3 = 1

Perhatikan polanya: hasilnya berulang 0 → 1 → 2 secara terus-menerus, terlepas dari apakah dividennya positif atau negatif. Perilaku konsisten ini membuat operator modulo sangat berguna dalam komputasi siklik, seperti:

  • Berputar melalui indeks dalam array atau buffer melingkar
  • Memetakan nilai pada fungsi periodik (misalnya, perhitungan berbasis waktu)

Rumus matematis yang diikuti Python untuk modulo adalah:

Import math 

a % b = a - (b * math.floor(a / b))

Ini memastikan bahwa hasilnya selalu antara 0 dan b (eksklusif) ketika b positif, atau antara b dan 0 (eksklusif) ketika b negatif.

Ringkasan Operator Modulo Python

Operator modulo (%) di Python menghitung sisa dari operasi pembagian. Operator ini mengikuti rumus matematis yang konsisten:

a % b = a - (b * math.floor(a / b))

Aturan Utama Perilaku Modulo Python:

  1. Untuk Pembagi Positif (b > 0)
    • Hasil selalu berada dalam rentang [0, b) (inklusif 0, eksklusif b).
  2. Untuk Pembagi Negatif (b < 0)
    • Hasil selalu berada dalam rentang (b, 0] (eksklusif b, inklusif 0).
    • Sisa mengambil tanda yang sama dengan b (pembagi).
  3. Bekerja dengan Bilangan Bulat dan Pecahan
    • Untuk bilangan pecahan, % mengikuti rumus yang sama tetapi dapat menimbulkan kesalahan pembulatan kecil karena presisi floating-point.
  4. Perbedaan Antara % dan math.fmod()
    • % memastikan sisa memiliki tanda yang sama dengan pembagi.
    • math.fmod(a, b) memastikan sisa memiliki tanda yang sama dengan dividen.

Use Case Umum Operator Modulo

Mari lihat beberapa aplikasi praktis dari operator modulo dan beberapa contoh lanjutannya. 

Mengecek apakah bilangan genap atau ganjil

Salah satu aplikasi paling umum dari operator modulo adalah menentukan apakah sebuah bilangan genap atau ganjil:

def is_even(number):
    return number % 2 == 0

def is_odd(number):
    return number % 2 != 0

# Testing the functions
numbers = [1, 2, -3, 4, -5, 6, 7]
for num in numbers:
    if is_even(num):
        print(f"{num} is even")
    else:
        print(f"{num} is odd")
1 is odd
2 is even
-3 is odd
4 is even
-5 is odd
6 is even
7 is odd

Ini berhasil karena bilangan genap menghasilkan sisa 0 saat dibagi 2, sedangkan bilangan ganjil menghasilkan sisa 1 atau -1.

Berputar melalui sebuah urutan

Operator modulo sempurna untuk membuat perilaku siklik, seperti berputar melalui daftar item:

days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]

def get_day(n):
    # Get the day of the week for the nth day, where day 0 is Monday
    return days[n % len(days)]

# Starting from Monday (day 0), what day is it after 10 days?
print(get_day(10))  # Output: "Thursday"

# What day was it 15 days ago from Monday?
print(get_day(-15))  # Output: "Sunday"
Thursday
Sunday

Dalam contoh ini, seberapa pun besar atau kecil (negatif) nilai n, fungsi akan selalu mengembalikan hari yang valid dalam sepekan.

Perhitungan tahun kabisat

Meskipun perhitungan tahun kabisat melibatkan beberapa kondisi, operator modulo menjadi inti dari algoritme:

Tahun kabisat mengikuti aturan khusus:

  • Sebuah tahun adalah tahun kabisat jika habis dibagi 4.
  • Namun jika habis dibagi 100, itu bukan tahun kabisat.
  • Kecuali juga habis dibagi 400, maka itu adalah tahun kabisat.
def is_leap_year(year):

    return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)

# Test the function
years = [1900, 2000, 2004, 2020, 2023, 2024]
for year in years:
    if is_leap_year(year):
        print(f"{year} is a leap year")
    else:
        print(f"{year} is not a leap year")
1900 is not a leap year
2000 is a leap year
2004 is a leap year
2020 is a leap year
2023 is not a leap year
2024 is a leap year

Ini memastikan bahwa aturan tahun kabisat kalender Gregorian diterapkan dengan benar.

Contoh Praktis Modulo Python

Berikut adalah beberapa cara Anda dapat menggunakan operator modulo dalam proyek Python Anda sendiri: 

Menggunakan modulo dalam loop

Operator modulo sering digunakan dalam loop untuk melakukan aksi pada interval tetap:

# Print a message every 5 iterations
for i in range(1, 11):
    print(f"Processing item {i}", end=": ")
    if i % 5 == 0:
        print("Checkpoint reached!")
    else:
        print("Continuing...")
Processing item 1: Continuing...
Processing item 2: Continuing...
Processing item 3: Continuing...
Processing item 4: Continuing...
Processing item 5: Checkpoint reached!
Processing item 6: Continuing...
Processing item 7: Continuing...
Processing item 8: Continuing...
Processing item 9: Continuing...
Processing item 10: Checkpoint reached!

Pola ini berguna untuk pemrosesan batch, pelaporan progres, atau menerapkan fungsionalitas apa pun yang perlu terjadi secara periodik.

Modulo dalam aplikasi dunia nyata

Hashing kata sandi

Dalam aplikasi kriptografi, aritmetika modulo adalah hal mendasar. Berikut contoh sederhana bagaimana modulo dapat digunakan dalam fungsi hashing dasar:

def simple_hash(text, modulus=1000000007):
    """A very simple hash function using modulo."""
    hash_value = 0
    for char in text:
        # Combine the current hash with the character's Unicode code point
        hash_value = (hash_value * 31 + ord(char)) % modulus
    return hash_value

# Test with some strings
print(simple_hash("hello"))  # Output a number between 0 and 1000000006
print(simple_hash("world"))
print(simple_hash("hello world"))
print(simple_hash("こんにちは"))  
99162322
113318802
204910434
807637228

Ini adalah contoh yang sangat dasar, karena hashing kriptografi nyata jauh lebih kompleks. Operasi modulo memastikan nilai hash tetap dalam rentang yang terkelola sambil tetap mempertahankan sifat-sifat fungsi hash yang baik.

Perhitungan waktu jam

Modulo berguna untuk menangani perhitungan waktu, seperti mengonversi jumlah jam yang besar ke format waktu standar.

def convert_to_12_hour_format(hours):
    return hours % 12 or 12  # Ensure 0 maps to 12

# Example
print(convert_to_12_hour_format(13))  # Output: 1
print(convert_to_12_hour_format(24))  # Output: 12
print(convert_to_12_hour_format(36))  # Output: 12

Di sini, operator modulo melakukan perputaran jam dalam format 12 jam.

Pengembangan gim: Menerapkan sistem giliran multipemain

Dalam gim berbasis giliran multipemain, kita dapat menggunakan modulo untuk berputar melalui pemain.

players = ["Alice", "Bob", "Charlie"]
turns = 10

for turn in range(turns):
      current_player = players[turn % len(players)]
      print(f"Turn {turn + 1}: {current_player}'s move")
Turn 1: Alice's move
Turn 2: Bob's move
Turn 3: Charlie's move
Turn 4: Alice's move
Turn 5: Bob's move
Turn 6: Charlie's move
Turn 7: Alice's move
Turn 8: Bob's move
Turn 9: Charlie's move
Turn 10: Alice's move

Memvalidasi digit pada barcode

Banyak sistem barcode menggunakan operasi modulo untuk mendeteksi kesalahan pada angka yang dipindai.

def is_valid_isbn13(isbn):
    digits = [int(d) for d in str(isbn)]
    checksum = sum(d * (1 if i % 2 == 0 else 3) for i, d in enumerate(digits))
    return checksum % 10 == 0

# Example ISBN Checksum validation
print(is_valid_isbn13(9780306406157))  # Output: True
print(is_valid_isbn13(9780306406158))  # Output: False
True
False

Kesimpulan

Operator modulo adalah alat serbaguna dalam gudang Python yang melampaui sekadar perhitungan sisa. Dari menentukan bilangan ganjil/genap hingga menerapkan algoritme kompleks dengan pola siklik, modulo memungkinkan solusi yang lebih rapi dan elegan untuk berbagai tantangan pemrograman.

Dengan memahami baik fungsionalitas dasar maupun perilaku yang lebih halus dengan berbagai tipe bilangan, Anda dapat memanfaatkan operator modulo untuk menulis kode yang lebih efisien dan mudah dibaca. Lain kali ketika Anda perlu menerapkan logika yang melibatkan siklus, rotasi, atau kejadian periodik, ingatlah bahwa operator modulo mungkin merupakan solusi yang tepat.

Jika Anda ingin mempelajari lebih lanjut cara menggunakan Python untuk proyek Anda, lihat kursus interaktif kami, Introduction to Data Science in Python. 

Python Modulo FAQs

Bagaimana cara kerja operator modulo dengan bilangan negatif di Python?

Di Python, saat menggunakan operator modulo dengan bilangan negatif, hasilnya akan memiliki tanda yang sama dengan pembagi.

Apakah operator modulo dapat digunakan dengan bilangan pecahan?

Ya, operator modulo dapat digunakan dengan bilangan pecahan, tetapi waspadai potensi kesalahan pembulatan kecil karena cara float direpresentasikan di komputer.

Bagaimana operator modulo digunakan dalam aplikasi dunia nyata?

Operator modulo digunakan dalam berbagai aplikasi dunia nyata, seperti fungsi hashing, perhitungan waktu jam, dan deteksi kesalahan seperti validasi ISBN.

Mengapa operator modulo penting dalam pemrograman?

Operator modulo penting untuk menyelesaikan masalah yang melibatkan periodisitas, pembagian, dan perputaran, menjadikannya alat serbaguna untuk penulisan kode dan perancangan algoritme yang efisien.


Benito Martin's photo
Author
Benito Martin
LinkedIn

Sebagai Founder Martin Data Solutions serta Data Scientist, ML, dan AI Engineer lepas, saya memiliki portofolio beragam dalam Regression, Classification, NLP, LLM, RAG, Neural Networks, Ensemble Methods, dan Computer Vision.

  • Berhasil mengembangkan sejumlah proyek ML end-to-end, termasuk pembersihan data, analitik, pemodelan, dan deployment di AWS dan GCP, menghadirkan solusi yang berdampak dan dapat diskalakan.
  • Membangun aplikasi web yang interaktif dan skalabel menggunakan Streamlit dan Gradio untuk berbagai use case industri.
  • Mengajar dan membimbing mahasiswa dalam data science dan analitik, mendorong perkembangan profesional mereka melalui pendekatan pembelajaran yang dipersonalisasi.
  • Merancang konten kursus untuk aplikasi retrieval-augmented generation (RAG) yang disesuaikan dengan kebutuhan enterprise.
  • Menulis blog teknis AI & ML berdampak tinggi, mencakup topik seperti MLOps, vector database, dan LLM, dengan capaian keterlibatan yang signifikan.

Dalam setiap proyek yang saya tangani, saya memastikan menerapkan praktik terkini dalam rekayasa perangkat lunak dan DevOps, seperti CI/CD, code linting, formatting, pemantauan model, pelacakan eksperimen, dan penanganan error yang tangguh. Saya berkomitmen menyajikan solusi menyeluruh, mengubah wawasan data menjadi strategi praktis yang membantu bisnis bertumbuh dan memaksimalkan pemanfaatan data science, machine learning, dan AI.

Topik
Python

Kursus Python Teratas

Program

Dasar-Dasar Data Python

28 jam
Kembangkan keterampilan data Anda, pelajari cara mengolah dan memvisualisasikan data, serta terapkan analisis canggih untuk mengambil keputusan berbasis data.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat SelengkapnyaLihat Selengkapnya