SyntaxError

Syntax, Türkçede dil bilgisine benzer. Türkçede dil bilgisi kurallarına uymak nasıl anlam karışıklığını gideriyorsa, Python'da da syntax aynı işlevi görür. Syntax kurallarına uymadan yazdığımız kodları program anlayamaz ve ne yapacağını bilemediği için uyarı verir. Peki SyntaxError'a en çok ne sebep olur? Yanlış veya eksik noktalama işaretleri, yanlış ya da eksik parantez kullanmak, yanlış yerleştirilen noktalama işaretleri, geçersiz komutlar, geçersiz değişken veya fonksiyon isimleri. Peki SyntaxErroru nasıl düzeltiriz? En önemli nokta tabii ki kodumuzun satırlarını baştan inceleyerek gözden kaçırdığımız hatayı farketmektir. 

 

print mertmekatronik

Output:

SyntaxError: Missing parentheses in call to 'print'. Did you mean print(mertmekatronik)?

Burada parantez kullanmadığımız için bir syntax hatası ile karşılaştık.

 

liste = [1,2,3,4,5,6,7,8,9]
for i in liste:
    if i % 3 == 0
        print(i)

Output:

SyntaxError: invalid syntax

Yukarıda ise if satırımızın sonuna iki nokta koymadığımız için Python yazım diline aykırı bir şey yaptık ve sonuç olarak SyntaxError ile karşılaştık.

KeyboardInterrupt

KeyboardInterrupt hatası genelde karşımıza döngü kurduğumuz kodları çalıştırırken gelir. Bu hatanın en sevdiği döngü çeşidi while döngüsüdür çünkü KeyboardInterrupt hatası sonsuz döngülerde ortaya çıkar. Eğer KeyboardInterrupt hatası alıyorsanız, muhtemelen bir döngünüz sonsuz döngüye girmiştir ve çıkamamıştır. Bu hatayı çözmenin çok kolay bir yolu vardır. While döngüsü kurduğunuz ya da kodunuzu çıkmaza sokacak yerlere print("deneme") tarzı küçük kodlar yazmanız gününüzü kurtarabilir. Kısa satırlı kodlarda bu hataların nerede olduğunu bulmak için böyle şeylere pek gerek kalmayabiliyor ama kod uzadıkça bu hataları nerede aldığınızı bulmak işkence olabiliyor. Print ile denemeler yaparak kodunuzun nerede sıkıştığını rahatça bulabilir ve sorunu çözebilirsiniz.

 

while True:
print(1)

Output:

1
1
1
1
1
1
1
1
1
1
1

.
.
.
KeyboardInterrupt

Burada da sonsuza kadar giden bir döngü kurduk. Bu döngüyü konsoldan durdurmazsak böyle sonsuza kadar gider ama konsoldan durdurduğumuzda sonunda KeyboardInterrupt hatası karşımıza çıktı.

 

TypeError

TypeError yazılımın kenarından köşesinden tutan herkesin aldığı en temel hatalardan birisidir. TypeError alakasız şeylerle mantıksız işlemler yapmaya çalıştığımızda ortaya çıkar. Mesela integer bir değerle string bir değere toplama işlemi yaptırmak normal hayatta da saçmadır. Kodumuz da biz böyle bir şey yaptırmaya çalışınca diyor ki "Abi napıyosun sen?" sonra uyarı alıyoruz.

x = 5
print(x+"abcd")

Output:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

Burada gördüğümüz gibi, kodumuz + operatörünün int ve str arasında kullanılmayacağını göseren bir uyarı çıktısı aldık.

Mesela yine elimizde x diye bir int değeri olsun. Stringlerde, stringin indexini alma kavramı vardır. Biz bir çılgınlık yapıp bir integerın bir indexini almaya çalışalım bakalım ne olacak.

 

x = 5
print(x[3])

Output:

TypeError: 'int' object is not subscriptable

Burada da integer objeler indekslenemez diye bir uyarıyla karşılaşıyoruz.

 

NameError

NameError'u da gerçek hayata benzetecek olursa, kısaca adı Ahmet olan birini Mehmet olarak çağırmaya benzer diyebiliriz. Siz Ahmet'e Mehmet diye seslenirseniz haklı olarak size cevap vermez. Python'da daha önce tanımlamadığımız değişkenleri kullanmaya çalışırsak NameError ile karşılaşırız.

 

ahmet = 7
print(mehmet)

Output:

NameError: name 'mehmet' is not defined

 

a = 44
b = 27
c = a+b
c = d
print(c)

Output:

NameError: name 'd' is not defined

Yukarda da gördüğümüz gibi kodumuzu yazarken daha önce tanımlamadığımız şeyleri kullandık ve bunu çıktı olarak istedik. Kodumuzun verdiği çıktı ise böyle bir isim tanımlı değil hatası olan NameError çıktısı

 

ValueError

Genelde kullanıcıdan input istediğimiz kodlarda karşılaştığımız bir hata çeşididir. Siz kullanıcıdan integer bir input isteyerek kodunuzu yazarsınız, kullanıcı integer dışında bir şeyi input olarak girer ve bu hatayla karşılaşır.

 

yaricap = int(input("Lütfen Yarıçap Giriniz."))

alan = (3.14) * yaricap**2

print("Girdiğiniz Yarıçaplı Dairenin Alanı: {}".format(alan))

# Bu fonksiyonda bir sorun yok gibi gözüküyor.
# Peki ya kullanıcı input olarak 
# Çankırı kelimesini girerse?

Output:

ValueError: invalid literal for int() with base 10: 'Çankırı'

Görüldüğü üzere, girdiğiniz input integer tarzda bir input değil diye bir hatayla karşılaştık.



IndentationError

IndendationError kısaca boşluk hatası demektir. Kodumuzu yazarken fonksiyonların, if, else, elif in altına bir şey yazdığımızda siz de bilirsiniz ki bir tab boşluk bırakmamız gerekir. Onun dışında boşluk olması gereken yere boşluk koymazsak, az ya da fazla boşluk koyarsak da bu hata ile karşılaşırız.

 

a = 44
b = 29
c = a+b
 print(c)

Output:

IndentationError: unexpected indent

Gördüğümüz üzere yukarda "print"in sola dayalı olması gerekmekte ama bizim elimiz çaptı 1 boşluk bırakarak yazdık. Sonuç olarak böyle bir hatayla karşılaşırız.

 

IndexError

IndexError karşımıza genelde listelerde index kullanarak eleman çağırırken karşımıza çıkar. Yani bir liste oluştururuz liste 1 den 9 a kadar olsun yani 9 elemanlı. Bu listede 9. elemanı çağırmak için 10. indexi kullanırız yani en fazla çağırabileceğimiz indeks 10. indekstir. Peki ya 15. indeksi çağırmaya kalkarsak ne olur? 

 

liste = [1,2,3,4,5,6,7,8,9]

input = int(input("Bir değer giriniz: "))

print(liste[input])

# Burada kullanıcının input olarak önce 4 girdiğini farzedelim.

# İnput 4 olursa outputumuz 4. indeks olan 5 olur.

# Peki kullanıcı input olarak 15 girerse outputumuz ne olur? 

Output :

IndexError: list index out of range

İstediğiniz indeks listenin dışında anlamına gelen IndexError ile karşılaştık.