Python'da "IndentationError: expected an indented block" hatası alıyorum, neden?

Merhaba arkadaşlar, Python’a yeni başladım. YouTube’dan bir videoyu izleyip aynısını yazdım ama çalıştırınca hata veriyor:

yas = int(input("Yaşın kaç? "))
if yas >= 18:
print("Ehliyet alabilirsin")
else:
print("Biraz daha beklemen lazım")

Çıkan hata:

  File "deneme.py", line 3
    print("Ehliyet alabilirsin")
    ^
IndentationError: expected an indented block after 'if' statement on line 2

Videodakiyle harfi harfine aynı yazdım bence. Nerede yanlış yapıyorum? :sweat_smile:

Hoş geldin! Bu hata Python’a başlayan hemen herkesin ilk karşılaştığı hatadır, korkacak bir şey yok. :slightly_smiling_face:

Python’da girinti (satır başındaki boşluk) süs değil, kodun bir parçasıdır. if, else, for, while, def gibi iki nokta (:) ile biten satırlardan sonra gelen satırlar içeri kaydırılmalı. Python “bu satır if’in içinde mi, dışında mı?” sorusunu buna bakarak anlar.

Senin kodunda print satırları en solda kalmış, Python da “if’in içine bir şey yazmadın” diyor. Doğrusu:

yas = int(input("Yaşın kaç? "))
if yas >= 18:
    print("Ehliyet alabilirsin")
else:
    print("Biraz daha beklemen lazım")

Birkaç ipucu:

  1. Standart 4 boşluktur. VS Code gibi editörlerde Tab tuşuna bastığında otomatik 4 boşluk koyar.
  2. Boşluk ile Tab’ı karıştırma. Bir satırda Tab, diğerinde boşluk kullanırsan TabError ya da aynı hatayı alırsın. VS Code’un sağ alt köşesinde “Spaces: 4” yazdığından emin ol.
  3. İç içe bloklarda girinti artar:
    for i in range(3):
        if i == 1:
            print("bir")   # 8 boşluk: hem for'un hem if'in içinde
    print("bitti")         # en solda: döngünün dışında, en sonda 1 kez çalışır
    
  4. Hata mesajındaki satır numarasına bak (line 3). Sorun genelde o satırda ya da hemen üstündedir.

Videodan kopyalarken girinti çoğu zaman kaybolur, kendi elinle yazarken her :'dan sonra Enter’a basınca editör seni zaten içeri alır. Kolay gelsin!

Çok teşekkürler komutanım, 4 boşluk verince çalıştı! :folded_hands: Videoda kodu kopyalarken boşluklar gitmiş meğer.