Ana içeriğe atla

Python’da Modül (Modulo) Operatörü: Temel Kavramları Anlama

Python’da modül operatörü (%) ile çift/tek kontrolünden kriptografiye veya döngüsel veri yapılarına kadar gerçek dünya problemlerini nasıl çözeceğinizi öğrenin.
Güncel 3 Eki 2026  · 9 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Python’daki modül operatörü (%) bir bölme işleminin kalanını belirlemek için kullanılan temel bir aritmetik operatördür. Kavram olarak basit olsa da, çeşitli programlama uygulamalarında kritik bir rol oynar. Bir sayının çift mi tek mi olduğunu kontrol etmekten dizilerde döngü yapmaya ve artık yılları belirlemeye kadar, modül operatörünü ustalıkla kullanmak Python’daki problem çözme becerilerinizi geliştirebilir.

Modül operatörünü anlamak önemlidir çünkü şu alanlarda sıkça karşımıza çıkar:

  • Çift ve tek sayıların belirlenmesi
  • Ögeler arasında döngüsel geçiş yapılması
  • Modüler aritmetikte matematiksel hesaplamaların uygulanması
  • Tarih hesaplamaları, kriptografi ve oyun mantığı gibi gerçek dünya uygulamaları.

Bu blogda, Python’da modül operatörünün kullanımına ilişkin sözdizimi, farklı sayı türleriyle davranışı, kullanım alanları ve pratik örnekleri kapsayan kapsamlı bir rehber sunacağım. Python’a yeni başladıysanız Introduction to Python kursumuzu almayı düşünebilirsiniz. 

Python’da Modül (Modulo) Operatörü Nedir?

Modül operatörü (%) iki sayı arasındaki bölmenin kalanını hesaplar. a (bölünen) ve b (bölen) olmak üzere, modül işlemi a’nın b’ye bölünmesinden kalan değeri döndürür.

Matematiksel arka plan

Modül, sayılar belirli bir değere (mod) ulaştıktan sonra “başa sardıkları” tamsayı aritmetiği sistemi olan modüler aritmetiğe dayanır. Kriptografi, özetleme (hashing) ve döngüsel hesaplamalarda yaygın olarak kullanılır.

12 saatlik bir saati düşünün: 12’den sonra 13’e devam etmek yerine 1’e geri döneriz. Bu, modülü 12 olan modüler aritmetiğin özüdür:

  • 13 % 12 = 1, yani 13. saat, 12 saatlik formatta 1’e karşılık gelir.

Python Modül Sözdizimi ve Temel Kullanım

Python’da modül operatörü basit bir sözdizimini izler:

remainder = dividend % divisor

Bazı temel örneklere bakalım:

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

7’yi 3’e böldüğümüzde bölüm 2, kalan 1 olur. Modül operatörü bize bu kalanı verir. Benzer şekilde, 15’in 4’e bölümü 3 kalan 3, 20’nin 5’e bölümü ise tam olarak 4 ve kalansızdır.

Tamsayılarla Çalışma

Artık modül operatörünün temellerini anladığımıza göre, tamsayılarla nasıl davrandığını inceleyelim.

Pozitif tamsayılarla modül

Pozitif tamsayılarla çalışmak modül operatörünün en doğrudan kullanım senaryosudur:

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

Bu örneklerde, bölenin bölünene kaç kez sığdığını bulup kalanını belirleyerek sonuçları hesaplayabiliriz:

  • 10 ÷ 3 = 3 kalan 1, dolayısıyla 10 % 3 = 1
  • 25 ÷ 7 = 3 kalan 4, dolayısıyla 25 % 7 = 4
  • 100 ÷ 10 = 10 kalan 0, dolayısıyla 100 % 10 = 0

Negatif tamsayılarla modül

Modül operatörünün davranışı negatif sayılarla çalışırken daha ilginç hale gelir. Python belirli bir kural izler: a % b ifadesinin sonucu her zaman b’nin (bölenin) işaretiyle aynıdır.

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

Bu sonuçlar ilk bakışta sezgilere aykırı görünebilir, ancak tutarlı bir kuralı izler:

  1. -10 % 3 için: (-10 ÷ 3 = -3 kalan -1 gibi) -1 beklenebilse de Python 2 döndürür. Çünkü Python, 0 ile 3 (hariç) arasında, 3’ün bir katına eklendiğinde -10’u veren bir değer arar. Cevap 2’dir, çünkü -12 + 2 = -10.
  2. 10 % -3 için: Sonuç bölenin (-3) işaretiyle aynıdır, bu yüzden -2 elde ederiz. Bunun nedeni 10 = (-3) × (-4) + (-2)’dir.
  3. -10 % -3 için: Sonuç -1’dir, çünkü -10 = (-3) × 3 + (-1).

Python’un modül işlemlerinde negatif sayıları nasıl ele aldığını anlamak, şu tür döngüsel hesaplamalarda kritik önem taşır:

  • Özetleme (hashing) fonksiyonlarının uygulanması
  • Saat aritmetiğini içeren problemler
  • Listelerde negatif indeksleme mantığının ele alınması

Kayan Noktalı Sayılarla Modül Kullanımı

Python’un modül operatörü yalnızca tamsayılarla sınırlı değildir; kayan noktalı sayılarla da çalışır:

# 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

Kayan noktalı sayılarla modül işlemi aynı ilkeyi izler: bölme sonrası kalanı döndürür. Ancak sayılar bilgisayarlarda (IEEE 754 formatı) saklandığı için küçük yuvarlama hataları oluşabilir.

Örneğin, Python 1.3 yerine 1.299999999999999 ve 0.2 yerine 0.19999999999999973 döndürür. Bu küçük tutarsızlıklar kayan noktalı aritmetikte yaygındır ve hassas hesaplamalar yaparken dikkate alınmalıdır.

Python ayrıca, kayan noktalı modül işlemleri için math modülünden math.fmod() fonksiyonunu alternatif olarak sunar; bu fonksiyon bazı uç durumları farklı ele alabilir:

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

% ile math.fmod() arasındaki temel fark, negatif sayıları nasıl ele aldıklarıdır. % sonucu bölenin işaretiyle aynı olacak şekilde ve [0, bölen) aralığında döndürürken, math.fmod() sonuç işaretinin bölünenle aynı olmasını garanti eder. Kalanın işaretinin önemli olduğu uygulamalarda bu ayrım kritiktir.

Peki % ne zaman, math.fmod() ne zaman kullanılmalı?

  • Düzenli işaret davranışına ihtiyaç duyduğunuzda (ör. bir aralıkta döngü yapmak) % kullanın.
  • Bölünenin işaretinin korunması gerekiyorsa, örneğin fizik simülasyonları veya matematiksel fonksiyonlarda, math.fmod() kullanın.

Python Modülünde Negatif Sayıları Ele Alma

Önceki örneklerde gördüğümüz gibi, Python’un negatif sayılarla modül operatörü uygulaması ilk sezgiyle örtüşmeyebilir. Bu davranışı daha sistematik olarak inceleyelim:

# 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

Dikkat edin: Sonuçlar, bölünen pozitif ya da negatif olsun, 0 → 1 → 2 şeklinde tekrar eder. Bu tutarlı davranış, modül operatörünü şu gibi döngüsel hesaplamalarda özellikle kullanışlı kılar:

  • Dairesel dizilerde veya tamponlarda indekslerin döndürülmesi
  • Periyodik fonksiyonlarda değerlerin eşlenmesi (ör. zamana dayalı hesaplamalar)

Python’un modül için izlediği matematiksel formül şudur:

Import math 

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

Bu, b pozitifken sonucun her zaman 0 ile b (hariç) arasında, b negatifken ise b ile 0 (hariç) arasında olmasını garanti eder.

Python’un Modül Operatörünün Özeti

Python’daki modül operatörü (%) bir bölme işleminin kalanını hesaplar. Tutarlı bir matematiksel formülü izler:

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

Python’un Modül Davranışının Temel Kuralları:

  1. Pozitif Bölenler (b > 0)
    • Sonuç her zaman [0, b) aralığındadır (0 dahil, b hariç).
  2. Negatif Bölenler (b < 0)
    • Sonuç her zaman (b, 0] aralığındadır (b hariç, 0 dahil).
    • Kalan, b’nin (bölenin) işaretini alır.
  3. Hem Tamsayılar Hem de Kayan Noktalarla Çalışır
    • Kayan noktalı sayılarda % aynı formülü izler ancak kayan nokta hassasiyeti nedeniyle küçük yuvarlama hataları oluşabilir.
  4. % ile math.fmod() Arasındaki Fark
    • % kalanın bölenle aynı işarete sahip olmasını sağlar.
    • math.fmod(a, b) kalanın bölünenle aynı işarete sahip olmasını sağlar.

Modül Operatörünün Yaygın Kullanım Alanları

Modül operatörünün pratik uygulamalarına bakalım ve birkaç ek örnek görelim. 

Bir sayının çift mi tek mi olduğunu kontrol etme

Modül operatörünün en yaygın uygulamalarından biri, bir sayının çift mi tek mi olduğunu belirlemektir:

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

Bu yöntem, çift sayıların 2’ye bölündüğünde kalanının 0 olmasına, tek sayıların ise kalanının 1 veya -1 olmasına dayanır.

Bir dizide döngü yapmak

Modül operatörü, bir listeyi döngüsel olarak dolaşmak gibi döngüsel davranışlar oluşturmak için idealdir:

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

Bu örnekte, n ne kadar büyük veya küçük (negatif) olursa olsun, fonksiyon her zaman geçerli bir haftanın gününü döndürür.

Artık yıl hesaplama

Artık yıl hesaplaması birden fazla koşul içerse de, algoritmanın merkezinde modül operatörü vardır:

Artık yıllar belirli bir kurala uyar:

  • Bir yıl 4’e tam bölünüyorsa artık yıldır.
  • Ancak 100’e de bölünüyorsa artık yıl değildir.
  • Yalnız 400’e de bölünüyorsa bu durumda artık yıldır.
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

Bu, Gregoryen takvimdeki artık yıl kurallarının doğru şekilde uygulanmasını sağlar.

Python Modülünün Pratik Örnekleri

İşte modül operatörünü kendi Python projelerinizde kullanabileceğiniz bazı yollar: 

Döngülerde modül kullanımı

Modül operatörü, düzenli aralıklarla işlem yapmak için döngülerde sıklıkla kullanılır:

# 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!

Bu desen, toplu işleme, ilerleme raporlama veya periyodik olarak gerçekleşmesi gereken işlevleri uygulamak için kullanışlıdır.

Gerçek dünya uygulamalarında modül

Parola özetleme (hashing)

Kriptografik uygulamalarda modüler aritmetik temeldir. İşte basit bir özetleme fonksiyonunda modülün nasıl kullanılabileceğine dair sadeleştirilmiş bir örnek:

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

Bu çok basit bir örnektir; gerçek kriptografik özetleme çok daha karmaşıktır. Modül işlemi, özet değerinin yönetilebilir bir aralıkta kalmasını sağlarken iyi bir özetleme fonksiyonunun özelliklerini de korur.

Saat hesaplaması

Modül, çok sayıda saati standart zaman formatlarına dönüştürmek gibi zaman hesaplamalarını ele almak için yararlıdır.

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

Burada modül operatörü saatleri 12 saatlik formata göre sarar.

Oyun geliştirme: Çok oyunculu tur sistemi uygulama

Çok oyunculu, tura dayalı oyunlarda oyuncular arasında sıralı geçiş yapmak için modül kullanılabilir.

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

Barkodlardaki rakamları doğrulama

Birçok barkod sistemi, taranan sayılardaki hataları tespit etmek için modül işlemlerini kullanır.

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

Sonuç

Modül operatörü, Python’un araç setinde basit kalan hesaplamalarının ötesine geçen çok yönlü bir araçtır. Tek/çift sayı belirlemeden döngüsel desenlere sahip karmaşık algoritmaları uygulamaya kadar modül, çeşitli programlama sorunlarına daha temiz ve zarif çözümler sağlar.

Hem temel işlevselliği hem de farklı sayı türlerindeki incelikli davranışını anlayarak, modül operatöründen yararlanıp daha verimli ve okunabilir kod yazabilirsiniz. Döngüler, döndürmeler veya periyodik olaylar içeren bir mantık uygulamanız gerektiğinde, modül operatörünün mükemmel bir çözüm olabileceğini unutmayın.

Python’u projeleriniz için nasıl kullanacağınızı daha fazla öğrenmek istiyorsanız, etkileşimli kursumuz Introduction to Data Science in Python’a göz atın. 

Python Modül Hakkında SSS

Python’da modül operatörü negatif sayılarla nasıl çalışır?

Python’da modül operatörü negatif sayılarla kullanıldığında, sonuç bölenin işaretiyle aynı olur.

Modül operatörü kayan noktalı sayılarla kullanılabilir mi?

Evet, modül operatörü kayan noktalı sayılarla da çalışır; ancak, bilgisayarlarda sayıların temsil edilme biçimi nedeniyle küçük yuvarlama hataları olabileceğini unutmayın.

Modül operatörü gerçek dünyada nasıl kullanılır?

Modül operatörü; özetleme fonksiyonları, saat hesaplamaları ve ISBN doğrulaması gibi hata tespitlerinde olduğu gibi çeşitli gerçek dünya uygulamalarında kullanılır.

Modül operatörü programlamada neden önemlidir?

Modül operatörü, periyodiklik, bölme ve başa sarma (wrap-around) içeren problemleri çözmek için kritiktir; bu da onu verimli kodlama ve algoritma tasarımı için çok yönlü bir araç yapar.


Benito Martin's photo
Author
Benito Martin
LinkedIn

Martin Data Solutions’ın Kurucusu ve Serbest Çalışan Veri Bilimci, ML ve AI Mühendisi olarak Regresyon, Sınıflandırma, NLP, LLM, RAG, Sinir Ağları, Topluluk Yöntemleri ve Bilgisayarlı Görü alanlarında geniş bir portföy sunuyorum.

  • Veri temizleme, analitik, modelleme ve AWS ile GCP’de dağıtımı kapsayan uçtan uca birçok ML projesini başarıyla geliştirerek etkili ve ölçeklenebilir çözümler sundum.
  • Çeşitli sektör kullanım senaryoları için Streamlit ve Gradio ile etkileşimli ve ölçeklenebilir web uygulamaları geliştirdim.
  • Veri bilimi ve analitik alanlarında öğrencilere eğitim verdim ve mentorluk yaparak kişiselleştirilmiş öğrenme yaklaşımlarıyla mesleki gelişimlerini destekledim.
  • Kurumsal gereksinimlere uyarlanmış geri getirme destekli üretim (RAG) uygulamaları için kurs içerikleri tasarladım.
  • MLOps, vektör veritabanları ve LLM’ler gibi konuları ele alan, yüksek etki yaratan yapay zeka ve ML teknik blogları yazdım ve önemli etkileşim sağladım.

Üstlendiğim her projede CI/CD, kod linting’i, biçimlendirme, model izleme, deney takibi ve sağlam hata yönetimi gibi yazılım mühendisliği ve DevOps’taki güncel uygulamaları hayata geçiririm. Tam kapsamlı çözümler sunmaya; veri içgörülerini, işletmelerin büyümesine yardımcı olan ve veri bilimi, makine öğrenimi ile yapay zekâdan en iyi şekilde yararlanan pratik stratejilere dönüştürmeye kararlıyım.

Konular
Python

En İyi Python Kursları

{count, plural, one {Program} other {Program}}

Python Veri Temelleri

{hours} sa
Veri becerilerinizi geliştirin, verileri nasıl manipüle edeceğinizi ve görselleştireceğinizi keşfedin ve veri odaklı kararlar almak için gelişmiş analitik uygulayın.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

{count, plural, one {blog} other {blog}}

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

{count, plural, one {blog} other {blog}}

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

{count, plural, one {Eğitim} other {Eğitim}}

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

{count, plural, one {Eğitim} other {Eğitim}}

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör