Berk Akademi
Birebir ders başvurusu Ücretsiz ön görüşme Ana Sayfa

Python "IndentationError: unexpected indent" Hatası Nasıl Çözülür?

python-indentationerror-unexpected-indent-hatasi-nasil-cozulur
Bu yazıda neler var?
  1. Python "IndentationError: unexpected indent" Hatası Ne Anlatır?
  2. Gereksiz Girintiyi ve Kapanmış Bloktan Sonraki Satırı Bul
  3. Tab, Boşluk ve Otomatik Girintiyi Kontrol Et
  4. if, for ve Fonksiyon Bloklarında Doğru Girinti
  5. Hata Ayıklama Kontrol Listesiyle Kodu Doğrula
  6. Girinti Mantığını Pekiştirme ve Destek Seçenekleri
  7. Sık Sorulan Sorular

Python IndentationError: unexpected indent hatası, kodun mevcut blok yapısında beklenmeyen bir girinti olduğunda ortaya çıkar. Çözmek için hata gösterilen satırın başındaki boşlukları, hemen üstündeki satırın bir blok başlatıp başlatmadığını ve komşu satırların hizasını karşılaştır. Gereksiz girintiyi kaldır veya satırı ait olduğu blok seviyesine taşı.

Python "IndentationError: unexpected indent" Hatası Ne Anlatır?

unexpected indent, Python'ın o satırdaki girintiyi mevcut blok yapısında beklemediğini gösterir. Girinti, bir satırın hangi kod bloğuna ait olduğunu belirtir. Satırın başındaki boşluklar, bulunduğu yerde açık bir blok yokken içeri girilmiş gibi görünüyorsa hata oluşur.

İlk teşhis için yalnızca işaretlenen satıra bakma: Hemen üstündeki satırı ve aynı seviyede olması gereken komşu satırları da incele. Üst satır yeni bir blok açmıyorsa veya önceki blok zaten kapanmışsa sorun, işaretlenen satırın hizasında olabilir.

Gereksiz Girintiyi ve Kapanmış Bloktan Sonraki Satırı Bul

Gereksiz Girintiyi ve Kapanmış Bloktan Sonraki Satırı Bul

Önce hata satırının başındaki boşlukları karşılaştır. Ardından üst satırda girintiyi gerektiren bir blok başlangıcı olup olmadığını kontrol et. Satır bağımsız bir komutsa, aynı seviyedeki diğer bağımsız komutlarla hizala.

Blok açılmadan girintilenmiş satır

Aşağıda print satırını içeri alacak bir blok yoktur. Başındaki gereksiz boşluklar hataya yol açar:

mesaj = "Merhaba"
    print(mesaj)

Girintiyi kaldırdığında kod çalışır:

mesaj = "Merhaba"
print(mesaj)

Beklenen çıktı: Merhaba.

Kapanmış bloktan sonra girintili kalan satır

Bir satır sola hizalanarak bloktan çıktığında, ardından gelen bağımsız satır da o seviyede kalmalıdır. Bu örnekte print("Bitti") satırı if bloğunu kapatır; sonraki satırın yeniden içeri girintilenmesi hatalıdır:

hazir = True
if hazir:
    print("Hazır")
print("Bitti")
    print("Devam")

print("Devam") satırını diğer bağımsız komutla hizala:

hazir = True
if hazir:
    print("Hazır")
print("Bitti")
print("Devam")

Düzeltilmiş kodun beklenen çıktısı:

Hazır
Bitti
Devam

Tab, Boşluk ve Otomatik Girintiyi Kontrol Et

Tab ve boşluk karakterleri ekranda benzer görünebilir, ancak Python bunları aynı girinti olarak değerlendirmeyebilir. Ayrıca editör, önceki satırdaki girintiyi yeni satıra otomatik taşıyabilir. Blok sona erdiğinde bu girinti silinmezse, Python beklenmeyen bir girinti algılar.

  1. Hata verilen satırın başındaki tüm girintiyi sil.
  2. Editöründe görünmez karakterleri gösterme seçeneği varsa etkinleştir. Tab karakterleri ile boşlukların farklı işaretlendiğini kontrol et.
  3. Aynı blokta bulunan komşu satırların başlangıç hizasını karşılaştır. Gerekiyorsa dosya içinde tek tip girinti kullan.
  4. Girintiyi yeniden elle ekle. Blok dışına çıkan satırlarda, otomatik taşınan fazla boşlukları kaldır.

Özellikle iki nokta üst üste ile biten bir satırdan sonra yeni satıra geçerken otomatik girinti oluşur. Bir sonraki satır artık blok dışındaysa girinti seviyesini geri al. Girinti mantığını temel düzeyde yeniden çalışmak için ücretsiz Sıfırdan Temel Python video eğitimi de yardımcı olabilir.

if, for ve Fonksiyon Bloklarında Doğru Girinti

if, for ve Fonksiyon Bloklarında Doğru Girinti

if, for ve def satırları iki nokta üst üste ile bittiğinde yeni bir blok başlatır. Bu bloğun gövdesi girintili yazılır. Blok tamamlandığında dışarıdaki satır önceki hizaya döner.

if bloğu

Aşağıdaki örnekte ikinci print satırında gereğinden fazla girinti vardır:

if True:
    print("Koşul doğru")
        print("Fazla girinti")

Düzeltilmiş hâlinde blok içindeki satırlar aynı hizadadır:

if True:
    print("Koşul doğru")
print("Blok bitti")

Beklenen çıktı: Koşul doğru, ardından Blok bitti.

for bloğu

for sayi in [1, 2]:
    print(sayi)
        print("Döngü sürüyor")

Fazla girintiyi kaldırınca:

for sayi in [1, 2]:
    print(sayi)
print("Döngü bitti")

Beklenen çıktı: 1, 2 ve Döngü bitti.

Fonksiyon bloğu

def selamla():
    return "Merhaba"
        print("Fazla girinti")

Fonksiyon dışındaki satır önceki hizaya dönmelidir:

def selamla():
    return "Merhaba"

print(selamla())

Beklenen çıktı: Merhaba.

Üç yapıyı birlikte doğrulama

def toplam_goster(sayilar):
    toplam = 0
    for sayi in sayilar:
        if sayi > 1:
            toplam += sayi
    return toplam

print(toplam_goster([1, 2, 3]))

Burada for, fonksiyonun içinde; if ise for bloğunun içindedir. return satırı döngüden çıkıp fonksiyon seviyesine döner. Beklenen çıktı: 5.

Hata Ayıklama Kontrol Listesiyle Kodu Doğrula

IndentationError: unexpected indent hatasını çözerken yalnızca hata mesajında gösterilen satıra değil, o satırın bağlı olduğu blok yapısına da bakmalısın.

  1. Hata satırını bul: Hata mesajındaki satır numarasını kod içinde işaretle.
  2. Üst satırı incele: Bir önceki satırda blok kapanmış mı, yoksa yeni bir blok mu başlıyor kontrol et.
  3. Blok ilişkisini sor: Satırın bir if, for, fonksiyon veya başka bir blok içinde olup olmadığını belirle.
  4. Gereksiz boşlukları kaldır: Satırın başında komşu satırlardan fazla girinti varsa sil ve yeniden hizala.
  5. Komşu satırlarla karşılaştır: Aynı blokta bulunan satırların aynı seviyede, iç blokların ise bir seviye daha içeride olduğundan emin ol.
  6. Tab ve boşlukları düzelt: Dosya genelinde girinti için tek bir kullanım biçimi seç ve karışık kullanımı temizle.
  7. Otomatik girintiyi kontrol et: Kod editörünün satır başına kendiliğinden eklediği boşlukları incele. Gerekiyorsa satır başını silip yeniden girintile.
  8. Kodu yeniden çalıştır: Düzeltmeden sonra dosyayı baştan çalıştır ve aynı hata sürüyorsa gösterilen satırın üstündeki bloğu tekrar incele.

İç içe if ve for bloklarında her seviye görsel olarak ayırt edilebilmelidir:

sayilar = [2, 5, 8]

for sayi in sayilar:
    if sayi % 2 == 0:
        print(f"{sayi} çift")

Beklenen çıktı:

2 çift
8 çift

if satırı for bloğunun içinde, print satırı ise if bloğunun içinde yer alır. Girinti seviyelerini bu şekilde karşılaştırmak, hatanın kaynağını daha hızlı görmeyi sağlar.

Girinti ve blok yapısı bilgini kısa sorularla ölçmek için Python bilgi testini çözebilirsin.

Girinti Mantığını Pekiştirme ve Destek Seçenekleri

Hata mesajını yalnızca tek bir satırı düzelterek geçmeye çalışmak yerine, küçük bir örnek üzerinden blok seviyelerini yeniden kurmak daha açıklayıcıdır. Her çalıştırmadan önce if, for ve fonksiyon gövdelerinin görsel olarak hizalanması, gereksiz girintiyi ve eksik girintiyi fark etmeyi kolaylaştırır.

Aynı yapısal hataları küçük örneklerle çözmekte zorlanıyorsan, kişiye özel ilerlemek için birebir Python özel ders programı hakkında bilgi edinebilirsin.

Sık Sorulan Sorular

IndentationError: unexpected indent ile expected an indented block arasındaki fark nedir?

unexpected indent, girintinin o satırda beklenmediğini gösterir. expected an indented block ise iki nokta ile başlayan bir bloktan sonra gelecek satırın yeterince içeri alınmadığını anlatır.

Tab ve boşluk karışımı girinti hatasına nasıl yol açar?

Tab ve boşluklar ekranda benzer görünebilir, ancak Python bunları farklı girinti karakterleri olarak değerlendirebilir. Bu nedenle aynı dosyada tek bir girinti biçimi kullanmak ve karışık satırları yeniden hizalamak gerekir.

Hata mesajında gösterilen satır doğru görünüyorsa hangi satırları kontrol etmeliyim?

Önceki satırları, özellikle iki nokta ile biten blok başlangıçlarını ve bloktan çıkılan satırları kontrol et. Ayrıca komşu satırlarda gizli tab, fazla boşluk veya otomatik eklenmiş girinti bulunup bulunmadığına bak.

Girinti seviyelerini düzenli biçimde karşılaştırıp kodu küçük örneklerle çalıştırdığında bu hata daha anlaşılır ve yönetilebilir hâle gelir.

Bu içerik aradığın cevabı verdi mi?
Yanıtın, hangi yazıları geliştirmemiz gerektiğini anlamamıza yardımcı olur.
Bu içeriğin üretilmesinde yapay zeka araçlarından destek alınmıştır.

Bu konudan sonra ne okuyabilirsin?

Tüm yazılar

İlgili Eğitimler

Berk Keskin, yazılım geliştirici ve eğitmen
Yazar

Berk Keskin Kimdir?

Yazılıma 12 yaşında başladı; İzmir Ekonomi Üniversitesi'ni bölüm birincisi ve yüksek şeref öğrencisi olarak tamamladı. Bugün yalnızca eğitim vermekle kalmıyor, sektörde aktif olarak yazılım projeleri geliştiriyor ve gerçek dünya deneyimini birebir derslerine taşıyor. Ezberden uzak, mühendislik zihniyetini merkeze alan sürdürülebilir öğrenme sistemleri tasarlayarak sorgulayan, üreten ve problem çözebilen yeni nesil yazılımcılar yetiştiriyor.

Sektörel Deneyim & Projeler

  • Ticarify Entegrasyon Yazılım logosu CEO Ticarify Entegrasyon YazılımPazaryerleri ve e-ticaret sitelerine otomatik e-fatura kesimi, sipariş ve kargo takibi hizmetleri sunan e-Dönüşüm platformunun API mimarisini ve yazılım ekibini yönetmektedir.
  • Benim Düğünüm logosu CEO Benim DüğünümDijital etkinlik ve anı paylaşım platformu.
  • Siberdizayn logosu Yazılım Ekibi Lideri SiberdizaynYüksek anlık oyuncu trafiğine sahip oyun kontrol panelleri ve sunucu altyapıları geliştiren yazılım ekibine liderlik etmektedir.
  • MEDYOGRAFYA 360° Dijital Çözümler logosu Dijital Strateji Lideri MEDYOGRAFYA 360° Dijital ÇözümlerŞirketlerin dijital çözümlerde uzun vadede nasıl ilerlemesi gerektiği ve dijital dönüşüm süreçlerinin yönetilmesine destek olmaktadır.
  • İzmir Ekonomi Üniversitesi logosu Danışma Kurulu Üyesi İzmir Ekonomi ÜniversitesiMezun olduğu üniversitesinde, Bilgisayar Programcılığı bölümünün akademik müfredatını güncel sektör ihtiyaçlarına göre şekillendirmek adına Danışma Kurulu'nda görev almaktadır.
WhatsApp Hemen Ara