Geliştirdiğimiz projelerde bazen hata alırız ve kodumuz çöker bizde bunu düzeltmek için ya bi kaç şeyi siler yada ümitsizliğe kapılıp off ya sürekli çöküyor, yapamıyorum diye üzülürüz, işte bu derste buna bir son vereceğiz.
Try except yapısı, programlamada “hata yakalama” olarakta bilinir, yaptığımız hataları yakalayıp hem kodun çökmesini önler hem de bize bilgilendirici mesaj verir, şimdi bunu görmek için hata çıkarabilecek bir kod yazalım,
import random
while True:
sayı = random.randint(1,10)
kullanıcı_sayısı = int(input("Bir sayı girin : "))
print("\nBilgisayarın sayısı : ", sayı)
toplam = sayı + kullanıcı_sayısı
print("\nikisinin toplamı : ",toplam)
burda random modülü ile rastgele sayı üretip kullanıcıdan aldığımız sayı ile toplayıp ekrana bastırıyoruz ama fark ettiyseniz veriyi “int” değişkeni tipinde yani numara değerinde alıyoruz, şimdi kullanıcı burda bize sayı yerine harf girerse ne olur,
Bir sayı girin : e
Traceback (most recent call last):
File "/home/cihangir/Belgeler/try_except_çalışma.py", line 6, in <module>
kullanıcı_sayısı = int(input("Bir sayı girin : "))
ValueError: invalid literal for int() with base 10: 'e'
program bize “ValueError” hatası verdi ve çöktü, bizde şimdi try except yapısı ile bunun önüne geçeceğiz,
import random
while True:
try:
sayı = random.randint(1,10)
kullanıcı_sayısı = int(input("Bir sayı girin : "))
print("\nBilgisayarın sayısı : ", sayı)
toplam = sayı + kullanıcı_sayısı
print("\nikisinin toplamı : ",toplam)
except ValueError:
print("\nLütfen sadece sayı girin!")
continue
burda program içinde sorun çıkarabilecek kod parçasını aldık try except yapısının içine koyduk ve “try” ile kodu dene eğer hata alırsan, o hatayı “except” ile yakalayıp “print” ile bize uyarı ver dedik, çalıştırdığımızda,
Bir sayı girin : Cihangir
Lütfen sadece sayı girin!
Bir sayı girin : merhaba
Lütfen sadece sayı girin!
Bir sayı girin : aaa
Lütfen sadece sayı girin!
Bir sayı girin : w
Lütfen sadece sayı girin!
Bir sayı girin : e
Lütfen sadece sayı girin!
Bir sayı girin : b
Lütfen sadece sayı girin!
Bir sayı girin : 13
Bilgisayarın sayısı : 8
ikisinin toplamı : 21
Bir sayı girin :
çökmeden istediğimiz gibi çalıştı, şuanda hiç bir sıkıntı yok peki yazdığımız kodda birden fazla hata alırsak onu nasıl düzeltiriz?
import random
while True:
try:
sayı = random.randint(1,10)
kullanıcı_sayısı = int(input("Bir sayı girin : "))
print("\nBilgisayarın sayısı : ", sayı)
bölüm = sayı / kullanıcı_sayısı
print("\nikisinin bölümü : ",bölüm)
except ValueError:
print("\nLütfen geçerli bir sayı girin!")
continue
bu sefer kod içerisinde bölme işlemi yapıyoruz, programı çalıştırdığımızda kullanıcının bizi sınayıp acaba 0 girsem ne olur diyip girdiğinde ne olacağına bakalım,
Bir sayı girin : e
Lütfen geçerli bir sayı girin!
Bir sayı girin : 0
Bilgisayarın sayısı : 10
Traceback (most recent call last):
File "/home/cihangir/Belgeler/try_except_çalışma.py", line 11, in <module>
bölüm = sayı / kullanıcı_sayısı
ZeroDivisionError: division by zero
ilk hata yakalamamız sorunsuz bi şekilde çalıştı ama kullanıcı rahat duramayıp 0 girdiğinde kod çöktü şimdi aldığımız bu ikinci hatayı koda ekleyip sorunu çözelim,
import random
while True:
try:
sayı = random.randint(1,10)
kullanıcı_sayısı = int(input("Bir sayı girin : "))
print("\nBilgisayarın sayısı : ", sayı)
bölüm = sayı / kullanıcı_sayısı
print("\nikisinin bölümü : ",bölüm)
except (ValueError, ZeroDivisionError):
print("\nLütfen 0'dan büyük ve geçerli bir sayı girin!")
continue
eğer burda da fark ettiyseniz except kısmında parantez açtık ve yanına aldığımız yeni hata türünü yazdık, program içerisinde isterse bunun gibi 10 tane daha hata olsun, onlarıda parantez içine aralarına virgül koyarak yazıp programın çökmesini engelleyebiliriz, şimdi kodu deneyelim,
Bir sayı girin : sadfsadg
Lütfen 0'dan büyük ve geçerli bir sayı girin!
Bir sayı girin : 0
Bilgisayarın sayısı : 3
Lütfen 0'dan büyük ve geçerli bir sayı girin!
Bir sayı girin : 1
Bilgisayarın sayısı : 10
ikisinin bölümü : 10.0
Bir sayı girin :
görüldüğü gibi programımız çökmedi ve şuanda istediğimiz gibi kullanabiliyoruz, try except yapısı basitçe bu şekilde kullanılıyor, anlaşılmayan yada yapılamayan yerlerde bana ulaşmayı unutmayın, iyi günler.
Hata!
Yorumunuz Çok Kısa, Yorum yapabilmek için en az En az 10 karakter gerekli