Hata Ayıklama(except...as...)

Hata Ayıklama(except...as...)

Yazar: Unknown Tarih: 3 Aralık 2011 Cumartesi Yorum: (0)
Python'da hata mesajları 2 bölümden oluşur
1)Hatanın adı
2)Hatanın mesajı

Örneğin

ValueError: invalid literal for int() with base 10: 'x'

Burada "ValueError" bilidğimiz gibi hatanın adıdır."invalid literal for int() with base 10: 'x'"
kısmı ise hata mesajıdır.İstersek bizbu mesajı değiştirip kullanıcının anlayacağı şekle dönüştürebiliriz.


while True:
try:
x=int(input("Bir sayı Giriniz: "))
if x%2==0:
print("Girilen sayı çift sayıdır.")
else:
print("Girilen sayı tek sayıdır.")
except ValueError as hata:
print("Karakter Hatası\nPython'un verdiği hata:",hata)






kodumuzu açıklayacak olursak:
Kullanıcıdan bir sayı alan program,bu sayının 2'ye tam bölünüp bölünmedğini kontrol ediyor.Buradan
sonuç 0 ise if'in içindeki print ifadesini yazdırıyor.Eğer sonuç 0'dan farklı ise else ifadesi içindeki
print ifadesi içeriğini yazdırıyor.Eğer kullanıcı a,b,e,? gibi karakterler girerse son iki satırda
ValueError ile yakaladığımız yazım hatasını mesajını devreye koyuyor ve böylelikle kullanıcıyı
yönlendirmiş oluyor.
Hata Ayıklama(continue-else...finaly)

Hata Ayıklama(continue-else...finaly)

Yazar: Unknown Tarih: Yorum: (0)
continue ifadesi üzerinde fazla durmadan sadece 1 örnek vererek geçeceğim.

while True:
x=input("Bir sayı giriniz: ")
if x=="çıkış":
break
if len(x)<5:
continue
print("En fazla 5 heneli bir sayı girebilirsiniz...")






bu programda amaç kullanıcıdan en fazla 5 haneli bir sayı almak.5 haneyi geçecek bir sayı yazarsa
bunu "En fazla 5 heneli bir sayı girebilirsiniz..." şeklinde uyarmak.Eğer 5 haneden daha az girerse
continue ifadesi ile programın başına geri döenere bizden tekrar yeni bir sayı girmemizi isteyecek.


else...finally...


else...finally... ifade try... except... ifadesinin bir bakıma devemı niteliğindedir.
Mesala bir bölme işlemini yapan program yazdığımızı varsayalım.Kullanıcı bu programda sayıda
girebilir diğer karakterlerdende girebilir.Bunu önlemek için except ValueError: ifadesini
kullnıyorduk.Ama kullanıcı paydayı 0 girdi diyelim o zaman ne olacak.Hangi sayı 0'a bölünür Ki?
Tabiki burada python kendi çapındaki hata mesajını ekrana yansıtacak.İşte bunun gibi 1.hatadan
sonraki hataları yakalamak için else...finally... ifadesini kullanıyoruz.Şunu sorabilirsinizi:
"try...except... aynı işi yapmıyor mu?" Bu soruya yanıt evet olacaktır.Ama eğer kodlamamızda
hataları gruplamak istersek else...finally... tercih edebiliriz.else...finally bir özelliğide
...finally kodundan önce herhangi bir hata verse bile bu koddan sonraki işlemleri
hiç hata vermemiş gibi işletmesidir.Şimdi bu yazdıklarımızı örenkle açıklayalım.

Örneğimiz bölme işleminin yapan program kodlamasıdır


try:
bölünen = int(input("bölünecek sayı: "))
bölen = int(input("bölen sayı: "))

except ValueError:
print("Bir Hata Oluştu!")

else:
try:
bölme=bölünen/bölen

except ZeroDivisionError:
print("Bir sayıyı 0'a bölemezsiniz!")
finally:
print(bölme)

Hata Ayıklama(pass)

Hata Ayıklama(pass)

Yazar: Unknown Tarih: 2 Aralık 2011 Cuma Yorum: (0)
pass ifadesi Türkçe anlamı geçmektir.Pythonda kullanım bakımından
bu anlama benzemektedir:Görmezden gelmek

Bir örnek açıklayalım
Programımız kalvyeden girilen 10'dan küçük 5 sayının kareleri toplamını bulan programı yazalım

sayac=1
toplam=0
while sayac<=5: sayac=sayac+1 x=int(input("1'den 10'a kadar bir sayı giriniz: ")) if x>10:
pass
else:
toplam=toplam+x*x
print("Girilen sayıların KARELERİ TOPLAMI: ",toplam)




şimdi kodumuzu açıklamaya başlayalım.pass ifadesine kadar olan kısım önceki konudaki programa
benziyor.Program bizden bir sayı alıyor sonra bu sayının 10'dan büyük mü olduğunu kontrol ediyor,
eğer büyükse pass ile hiçbir işlem yapmadan sizden tekrar bir sayı girmenizi istiyor,eğer girdiğiniz
sayı 10'dan küçükse pass ifadesini atlayarak else kısmındaki kodları çalıştırarak girilen
sayıların karelerinin toplamını alıp ekrana yazıyor.

Hata Ayıklama(break)

Yazar: Unknown Tarih: 1 Aralık 2011 Perşembe Yorum: (0)
Python'da break özel bir deyimdir.Bu deyim ile devam etmekte olan bir programı kesintiye uğratabiliriz.
Daha öncede kullandğımız bu deyim programın belli bir yerinden sonra,programı sonlandırmamızı
sağlıyordu.
Şimdi ise bunu hata yakalamada kullanacağız.

Örneğin;

Klavyeden girilen 5 sayının 10'dan küçük sayıların toplamını bulan programı kodlayalım

sayac=1
toplam=0
while sayac<=5: sayac=sayac+1 try: sayi=int(input("sayı :")) if sayi<=10: print ("Girilen sayı-->",sayi)
toplam=toplam+sayi
print("Girilen sayılarn toplamı: ",toplam)
else:
print("Girilen sayı 10'dan büyüktür,lütfen 10'dan küçük sayı giriniz.")
continue
except ValueError:
break


Şimdi bu kodu açıklayalım.Kodda daha önceden görmediğimiz hiç yeni kod yok.
İlk öncelikle bir "sayac" şeklinde bir değişken belirledim.Bunun nedeni ise programın bizden 5 tane
sayı aldığında programdan çıkmamazı sağlayacak."continue" komutuyla her girdiğimiz sayıda başa dönmesini
sağladık.Buraya kadar her şey çok güzel.Kullanıcı olduda yanlışlıka "a" harfi yada "3e" gibi bir şey yazdı.
Bunun neticesinde hiçbir uyarı almadan programdan çıkacaktır ve programı yeniden başlatması gerekecektir.