🐞TemellerBaşlangıç

Yeni Başlayanların En Sık 15 Kod Hatası ve Çözümleri

⏱ 11 dk okuma · Yayın: 9 Ekim 2026 · Hazırlayan: Kuzey Kutbu Editörlüğü · Tüm kod örnekleri çalıştırılarak test edildi

Python ve JavaScript'te yeni başlayanların en sık aldığı 15 hata: gerçek hata mesajını okumayı, hatayı düzeltmeyi ve bir daha yapmamayı adım adım öğren.

Kod yazan herkes hata alır. Hata mesajı bir azar değil, bilgisayarın sana bıraktığı bir nottur: "Şu satırda, şu yüzden takıldım." Bu notu okumayı öğrendiğinde hataların çoğunu birkaç saniyede düzeltirsin.

Bu rehberin sonunda şunları yapabileceksin:

  • Python ve JavaScript hata mesajında hangi satıra ve hangi hata türüne bakacağını bilmek,
  • Yeni başlayanların en sık karşılaştığı 15 hatayı tanımak ve düzeltmek,
  • Bu hataları baştan önleyen alışkanlıklar edinmek.
Bu mesajlar gerçek: Aşağıdaki tüm hata mesajları örnek kodlar Python 3.13 ve Node.js 22 ile çalıştırılarak üretildi ve birebir aktarıldı. Okumayı kolaylaştırmak için yalnızca dosya yolu oyun.py / oyun.js olarak kısaltıldı ve JavaScript'in altındaki at ... satırları çıkarıldı. Daha eski Python sürümlerinde aynı hatanın ifadesi biraz farklı olabilir.

Örnekleri denemek için tarayıcıdaki Editör'ü açık tut: hatalı kodu yapıştır, mesajı gör, düzelt.

1. Hata mesajı nasıl okunur?

Python'da

puan = 50
print(Puan)
Traceback (most recent call last):
  File "oyun.py", line 2, in <module>
    print(Puan)
          ^^^^
NameError: name 'Puan' is not defined. Did you mean: 'puan'?

Python mesajını aşağıdan yukarıya oku:

  1. En alt satır: Hata türü (NameError) ve açıklama. En önemli bilgi burada.
  2. line 2: Sorunun bulunduğu satır numarası.
  3. ^^^^ işaretleri: Satırın tam olarak hangi kısmının sorunlu olduğunu gösterir.
  4. Did you mean: Python bazen çözümü de önerir. Burada puan demek istediğini tahmin etmiş.

JavaScript'te (Node.js)

oyun.js:2
console.log(Skor);
            ^

ReferenceError: Skor is not defined

JavaScript'te dosya adı ve satır numarası en üstte (oyun.js:2), hata türü ve açıklama ise ^ işaretinin altında yer alır. Tarayıcıda çalışırken aynı bilgileri geliştirici araçlarının Console sekmesinde görürsün.

İngilizce mesajdan korkma. Her mesaj iki parçadır: tür (NameError, TypeError...) ve açıklama. Türü tanıdığında açıklamanın yarısını zaten anlamış olursun.

2. Python yazım hataları (SyntaxError)

Bu hatalarda program hiç çalışmaya başlamaz, çünkü Python kodu okuyamaz. Bu yüzden mesajda Traceback satırı yoktur.

Hata 1: İki nokta (:) unutmak

yas = 12
if yas > 10
    print("Büyük")
  File "oyun.py", line 2
    if yas > 10
               ^
SyntaxError: expected ':'

Anlamı: Python : bekliyordu. Çözüm: if yas > 10: yaz. Önleme: if, elif, else, for, while ve def satırları her zaman : ile biter.

Hata 2: Girinti (boşluk) eksik

yas = 12
if yas > 10:
print("Büyük")
  File "oyun.py", line 3
    print("Büyük")
    ^^^^^
IndentationError: expected an indented block after 'if' statement on line 2

Anlamı: 2. satırdaki if'ten sonra içeride (girintili) bir blok bekleniyordu. Çözüm: print satırının başına 4 boşluk koy. Önleme: Python'da girinti süs değil, kuraldır: : ile biten satırın altındaki satırlar içeri kayar.

Hata 3: Kapanmamış tırnak veya parantez

print("Merhaba)
  File "oyun.py", line 1
    print("Merhaba)
          ^
SyntaxError: unterminated string literal (detected at line 1)

Açılan tırnak kapanmamış. Parantez unutulduğunda ise mesaj farklıdır:

print("Toplam:", (3 + 4)
isim = "Ada"
  File "oyun.py", line 1
    print("Toplam:", (3 + 4)
         ^
SyntaxError: '(' was never closed

Çözüm: Her açılan ", (, [, { için bir kapanış ekle. Önleme: Açarken hemen kapat, sonra içini doldur: önce print() yaz, sonra parantezin içine geç.

Hata 4: Karşılaştırmada = kullanmak

sayi = 7
if sayi = 7:
    print("Yedi!")
  File "oyun.py", line 2
    if sayi = 7:
       ^^^^^^^^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

Anlamı: Tek = "değer ata", çift == "eşit mi?" demektir. Çözüm: if sayi == 7:. Önleme: if ve while içinde soru soruyorsan çift eşittir kullan.

3. Python çalışma hataları

Bu hatalarda program çalışmaya başlar ama sorunlu satıra gelince durur. Mesaj Traceback ile başlar.

Hata 5: Değişken adını farklı yazmak (NameError)

Yukarıda okuduğumuz örnek: puan tanımlanıp Puan kullanılmıştı. Python büyük-küçük harfe duyarlıdır; puan, Puan ve PUAN üç farklı addır. Değişkeni tanımlamadan önce kullanmak ya da adı yanlış yazmak da aynı hatayı verir. Önleme: Değişken adlarını hep küçük harfle ve Türkçe karakter kullanmadan yaz (sayi, isim).

Hata 6: Yazıyla sayıyı + ile birleştirmek

yas = 12
print("Yaşın: " + yas)
Traceback (most recent call last):
  File "oyun.py", line 2, in <module>
    print("Yaşın: " + yas)
          ~~~~~~~~~~^~~~~
TypeError: can only concatenate str (not "int") to str

Anlamı: Yazıya (str) yalnızca yazı eklenebilir, sayı (int) eklenemez. Çözüm: Üç yol da çalışır:

yas = 12
print("Yaşın: " + str(yas))
print("Yaşın:", yas)
print(f"Yaşın: {yas}")

Hata 7: input() ile gelen değeri sayı sanmak

cevap = input("Kaç yaşındasın? ")
if cevap > 10:
    print("10'dan büyüksün")
Traceback (most recent call last):
  File "oyun.py", line 2, in <module>
    if cevap > 10:
       ^^^^^^^^^^
TypeError: '>' not supported between instances of 'str' and 'int'

Anlamı: input() her zaman yazı döndürür; kullanıcı 12 yazsa bile elinde "12" vardır. Çözüm: yas = int(cevap) ile sayıya çevir, sonra karşılaştır.

Hata 8: Sayıya çevrilemeyen yazı (ValueError)

Kullanıcı "12" yerine "on" yazarsa:

Bir sayı yaz: Traceback (most recent call last):
  File "oyun.py", line 2, in <module>
    sayi = int(cevap)
ValueError: invalid literal for int() with base 10: 'on'

Çözüm: Çevirmeden önce kontrol et:

cevap = input("Bir sayı yaz: ")
if cevap.isdigit():
    sayi = int(cevap)
    print(sayi * 2)
else:
    print("Lütfen rakamla yaz, örneğin 10")

"on" yazınca Lütfen rakamla yaz, örneğin 10, "10" yazınca 20 çıkar. (isdigit() eksi sayıları kabul etmez; başlangıç için yeterlidir.)

Hata 9: Listede olmayan sıraya erişmek (IndexError)

meyveler = ["elma", "armut", "muz"]
print(meyveler[3])
Traceback (most recent call last):
  File "oyun.py", line 2, in <module>
    print(meyveler[3])
          ~~~~~~~~^^^
IndexError: list index out of range

Anlamı: Sayma 0'dan başlar: 3 elemanlı listenin sıraları 0, 1, 2'dir. Çözüm: Son eleman için meyveler[2] ya da meyveler[-1] kullan. Emin değilsen len(meyveler) ile uzunluğu yazdır.

Hata 10: Başka dilin komutunu kullanmak (AttributeError)

liste = [1, 2]
liste.push(3)
Traceback (most recent call last):
  File "oyun.py", line 2, in <module>
    liste.push(3)
    ^^^^^^^^^^
AttributeError: 'list' object has no attribute 'push'

Anlamı: Python listelerinde push diye bir komut yok; o JavaScript'e ait. Çözüm: liste.append(3). İki dili birlikte öğrenenlerde çok sık görülür; Python mu JavaScript mi rehberindeki karşılaştırma işini kolaylaştırır.

4. JavaScript hataları

Hata 11: Tanımlanmamış ad (ReferenceError)

let skor = 10;
console.log(Skor);

Mesajı 1. bölümde gördük: ReferenceError: Skor is not defined. JavaScript de büyük-küçük harfe duyarlıdır. Python alışkanlığıyla print() yazmak da benzer sorunlara yol açar; JavaScript'te ekrana yazmak için console.log() kullanılır.

Hata 12: Kapanmamış süslü parantez

function selamla(isim) {
  console.log("Merhaba " + isim);

selamla("Ada");
oyun.js:5



SyntaxError: Unexpected end of input

Anlamı: Dosya bitti ama JavaScript hâlâ bir } bekliyordu. Dikkat: Satır numarası (5) dosyanın sonunu gösterir, eksik parantezin yerini değil. Çözüm: Fonksiyonun sonuna } ekle. Önleme: Kodu düzgün girintile; her { ile } aynı hizada olsun.

Hata 13: const ile tanımlanan değeri değiştirmek

const can = 3;
can = can - 1;
console.log(can);
oyun.js:2
can = can - 1;
    ^

TypeError: Assignment to constant variable.

Anlamı: const "sabit" demektir, sonradan değiştirilemez. Çözüm: Değişecek değerler (can, skor, sayaç) için let can = 3; kullan. Kod bu hâliyle 2 yazar.

Hata 14: Olmayan bir şeyin özelliğini okumak

const sayilar = [4, 8, 15];
console.log(sayilar[3].toFixed(1));
oyun.js:2
console.log(sayilar[3].toFixed(1));
                       ^

TypeError: Cannot read properties of undefined (reading 'toFixed')

Anlamı: sayilar[3] yok, yani undefined; olmayan bir şeyin toFixed'ini okuyamazsın. Python'daki IndexError'ın JavaScript'teki karşılığı gibi düşün: JavaScript listede olmayan sıra için hata vermez, sessizce undefined döndürür; hata bir sonraki adımda patlar. Çözüm: Önce sınırı kontrol et:

const sayilar = [4, 8, 15];
const i = 3;
if (i < sayilar.length) {
  console.log(sayilar[i].toFixed(1));
} else {
  console.log("Bu sırada eleman yok");
}

Hata 15: Komutun adını yanlış yazmak

let mesaj = "merhaba";
console.log(mesaj.touppercase());
oyun.js:2
console.log(mesaj.touppercase());
                  ^

TypeError: mesaj.touppercase is not a function

Anlamı: Yazılarda touppercase adında bir komut yok. Doğrusu büyük harflerle toUpperCase(); çıktı MERHABA olur. Önleme: JavaScript komutları "deve hörgücü" yazılır: ilk kelime küçük, sonrakiler büyük harfle başlar (toUpperCase, getElementById).

5. Mesaj vermeyen hatalar

En sinsi hatalar, program çalıştığı hâlde yanlış sonuç verenlerdir. Bilgisayar hata mesajı göstermez, çünkü teknik olarak bir kural çiğnenmemiştir.

console.log("5" + 3);
console.log("5" - 3);
console.log(Number("5") + 3);

Çıktı sırasıyla 53, 2, 8 olur. JavaScript yazı ile sayıyı + ile toplamaz, yan yana yapıştırır. Sayacı hiç güncellemeyen bir while döngüsü de hata vermez, sonsuza kadar çalışır. Doğrusu şöyle:

sayac = 1
while sayac <= 5:
    print(sayac)
    sayac = sayac + 1

Son satırı silersen ekrana durmadan 1 yazılır. Bu tür hataları bulmanın yolu, ara değerleri print / console.log ile yazdırıp beklediğinle karşılaştırmaktır.

6. Hata ayıklarken sık yapılan hatalar

  • Mesajı okumadan kodu değiştirmek: Önce en alttaki (JavaScript'te ^ altındaki) satırı oku.
  • Yalnızca gösterilen satıra bakmak: Eksik parantez veya tırnak çoğu zaman bir önceki satırdadır. Gösterilen satırda sorun yoksa bir üst satıra bak.
  • Aynı anda çok şeyi değiştirmek: Bir düzeltme yap, çalıştır, sonucu gör. Python bir seferde yalnızca ilk yazım hatasını gösterir; birini düzeltince sıradaki ortaya çıkar. Bu normaldir.
  • Uzun kod yazıp sonra çalıştırmak: 3–5 satırda bir çalıştır. Hata çıkarsa nerede arayacağını bilirsin.
  • Kopyalanan kodda tırnak türü: Bazı belge programları " yerine eğik tırnak koyar. Kodu editöre yapıştırdıktan sonra tırnakları kontrol et.

Hızlı başvuru tablosu

Mesajda görürsenİlk kontrol et
expected ':'if/for/while/def satırının sonunda : var mı?
IndentationError: ile biten satırın altı içeri kaymış mı?
was never closed, unterminated, Unexpected end of inputTırnak ve parantez çiftleri tam mı?
is not definedAd doğru yazılmış mı, büyük-küçük harf aynı mı?
TypeError (Python)Yazı ile sayıyı karıştırdın mı? int() / str() gerekli mi?
index out of range, of undefinedSayma 0'dan başlıyor; listenin uzunluğu kaç?
is not a function, has no attributeKomutun adı ve harfleri doğru mu, o dile mi ait?

7. Kendin dene

Her kodu Editör'de çalıştır, mesajı oku, düzelt. Bazılarında birden fazla hata var: birini düzeltince sıradaki görünür.

  1. (Kolay) print("Merhaba Dünya" satırını düzelt. Hangi hata türünü aldın?
  2. (Kolay) Bu kodda iki hata var. Python önce hangisini gösteriyor?
    isim = "Ada"
    if isim == "Ada"
    print("Selam Ada")
  3. (Orta) Bu kod hata vermiyor ama 5 yazınca İki katı: 55 çıkıyor. Neden? İki katı: 10 yazdıracak şekilde düzelt.
    sayi = input("Bir sayı yaz: ")
    print("İki katı: " + sayi * 2)
  4. (Orta) Bu programda iki çalışma hatası var. Düzeltince Ortalama: 81.66666666666667 yazmalı.
    notlar = [70, 85, 90]
    toplam = 0
    for n in notlar:
        toplam = toplam + n
    ortalama = toplam / len(Notlar)
    print("Ortalama: " + ortalama)
  5. (Zor) Bu JavaScript kodu 60 yerine NaN (sayı değil) yazdırıyor ve hiç hata mesajı vermiyor. Tek bir karakteri silerek düzelt.
    const puanlar = [10, 20, 30];
    let toplam = 0;
    for (let i = 0; i <= puanlar.length; i++) {
      toplam = toplam + puanlar[i];
    }
    console.log(toplam);
5. görev için ipucu: Hata 14'ü hatırla. Döngü son turda hangi i değeriyle çalışıyor ve puanlar[i] o zaman ne oluyor?

8. Ebeveyn ve öğretmenler için

Ebeveyn/öğretmen notu: Yeni başlayan çocukların çoğu kırmızı hata mesajını "başaramadım" olarak algılar. Mesajı onun yerine düzeltmek yerine şu üç soruyu sordurun: Hangi satır? Hangi tür? Ne demek istiyor? Birkaç tekrardan sonra bu, kendiliğinden bir alışkanlığa dönüşür.

Sınıfta sık görülen bir durum, tek bir eksik : ya da tırnak yüzünden uzun süre takılmaktır. Kısa aralıklarla çalıştırma alışkanlığı bu süreyi kısaltmaya yardımcı olur. Yazım hataları çok yıldırıyorsa bir süre blok kodlamaya dönmek ve mantığı orada kurmak da işe yarar. Konuları sırayla ilerlemek için derslere göz atabilirsiniz.

9. Sık sorulan sorular

Hata mesajları neden İngilizce?

Python ve JavaScript'in hata mesajları dünyanın her yerinde aynı, İngilizce metinlerle gelir. İyi haber: Mesajlar kalıplaşmıştır. Bir hata türünü bir kez öğrendiğinde, aynı mesajı tekrar gördüğünde hemen tanırsın.

Python neden bir seferde yalnızca bir hata gösteriyor?

Python bir yazım hatası bulduğunda kodu okumayı bırakır; çalışma hatasında da program o satırda durur. Bu yüzden birini düzeltip tekrar çalıştırdığında sıradaki hata görünür.

Hata mesajındaki satır numarası yanlış olabilir mi?

Satır numarası, bilgisayarın sorunu fark ettiği yerdir. Eksik parantez veya tırnakta asıl hata daha önceki bir satırda olabilir; JavaScript'teki Unexpected end of input ise dosyanın sonunu gösterir.

SyntaxError ile diğer hatalar arasındaki fark nedir?

SyntaxError'da kod dilin yazım kurallarına uymaz ve program hiç başlamaz. NameError, TypeError gibi hatalarda ise program çalışmaya başlar ve sorunlu satıra gelince durur.

Hiç hata almadan kod yazmak mümkün mü?

Deneyimli programcılar da sürekli hata alır. Fark, mesajı hızlı okuyup düzeltmeleridir. Hata almak öğrenmenin doğal bir parçasıdır.

Hata mesajı yoksa ama sonuç yanlışsa ne yapmalıyım?

Bu bir mantık hatasıdır. Ara değerleri print veya console.log ile yazdır ve her adımda beklediğin değerle karşılaştır. Algoritmanı kâğıt üzerinde adım adım izlemek de çok işe yarar; bunun için algoritma rehberine bakabilirsin.

Öğrendiklerini hemen dene! 🚀

Kurulum yok: kodu tarayıcıdaki editöre yapıştır, çalıştır, değiştir.

💻 Kod Editörünü Aç📚 Ücretsiz Derslere Başla

Sıradaki rehberler