in

Python’da Fonksiyonlar ve Hata Yakalama


Merhaba arkadaşlar, bügün ki konumuz fonksiyonlar ve hata yakalama.

    Belli bir kod bloğunu tekrar tekrar kullanmak ve genel kod satırı sayısını az tutmak istersek fonksiyonlar başvuracağımız yapı tiplerinden biridir. Print’in, input’un birer fonksiyon olduklarını söylemiştik. Peki bu fonksiyonlar nasıl yazıldılar veya kendi fonksiyonlarımızı nasıl yazacağız? İlk fonksiyonumuzu yazalım. Bu fonksiyon kendisine verilen parametreyi 3 ile çarpıp ekrana yazsın .

def uc_ile(x):
    print(x*3)

    Basit bir fonksiyon tanımlamış olduk. Yazımı def ile başlatıyoruz . Bilgisayara def sözcüğü ile fonksiyon yazacağımızı söylüyoruz . uc_ile yazısı fonksiyonumuzun ismi iken parantez içine yazdığımız x karakteri parametre olma görevini üstleniyor. Parametre sayısını istediğimiz kadar belirleyebiliriz. Yalnız her bir parametre arasına virgül koymak zorundayız.

Simdi fonksiyonumuzu çağıralım.

def uc_ile(x):
    print(x*3)

uc_ile(6)

    Fonksiyonlar ile if yapısını birleştirerek kontrol blokları oluşturabiliriz. Örnek verecek olursak,

def kontrol(x):
    if x%2 == 0:
        return 0
    else:
        return 1

    Yukarıda yazdığımız fonksiyon bloğunun yaptığı iş, kendisine parametre olarak verilen sayının çift olup olmadığını kontrol etmektir. Eğer çift ise return kelimesi ile 0 değerini döndürüyoruz. Eğer tek ise return kelimesi aracılığı ile 1 değerini döndürüyoruz. Bu fonksiyonun çağırma şekli biraz farklı;

y = kontrol(12)

yazarak kontrol fonksiyonuna 12 sayısını gönderiyoruz. 12 sayısı if bloklarından geçerken çift olduğu için return 0 komutu işleniyor. Bu da y‘nin değerini 0 yapıyor.

    Fonksiyonlar ile birden fazla sayının asal olup olmadığını çok rahat bir şekilde kontrol edebilirsiniz.

def asal_mı(x):
    for i in range(2, int(x/2)+1):
        if x%i==0:
        return 0
    return 1

for i in range(2,20):
    cevap = asal_mı(i)
    print(i, "-->", cevap)

    Yazdığımız kodu çalıştırdığımızda sayıların sağ tarafında kalan 1 ve 0’lar soldaki sayıların asal olup olmadığını belirtiyor. Eğer sayı asalsa 1 değilse 0 yazıyor.

Hata Yakalama

    Python’da en önemli konudur hata yakalama. Çünkü hesaba katmadığımız durumların, yazdığımız programı çökertmemesi için hata yakalamaya başvururuz. Genel hatlarıyla hata yakalama, kod içerisinde daha önce ön görülmemiş hataları veya eksiklikleri görmemize yardımcı olur. Kullanımı oldukça basit olmasına rağmen, son derece önemli bir yapıdır.

veri = input("sayı giriniz\n")
veri = int(veri)
print(veri)

     Örnek olarak üsteki kodu alırsak, kullanıcı eğer sayı yerine sayı dışında herhangi bir karakter girerse programımız hata verir ve çöker.

Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
============= RESTART: C:\Users\metehan\Desktop\site\nanaanan.py =============
sayı giriniz
d
Traceback (most recent call last):
    File "C:\Users\metehan\Desktop\hata_yakalama.py", line 3, in <module>
        veri = int(veri)
ValueError: invalid literal for int() with base 10: 'd'
>>>

    Bu ve bunun gibi çökmeleri engellemek için hata yakalamaya başvururuz. Eğer kodumuzu şu şekilde güncellersek:

try:
    veri = input("sayı giriniz\n")
    veri = int(veri)
    print(veri)
except:
    print("karakter değil sayı giriniz")

programımız artık çökmeyecektir.

    try yazısı ile bilgisayardan, altında ki bloğu çalıştırmasını istiyoruz. Eğer kodu çalıştırırken herhangi bir hata ile karşılaşırsa except bloğu altında ki kodu işleyecektir. tryexcept yapısı ile karşılaşılan hatayı görebilirsiniz.

try:
    veri = input("sayı giriniz\n")
    veri = int(veri)
    print(veri)
except Exception as e:
    print("karakter değil sayı giriniz")
    print("karşılaşılan hata tipi: ", e)

    Kodda değişen tek kısım except satırı ve altında ki kod bloğudur.

    Eğer tek bir hata tipine karşı önlem almak isterseniz ki yazdığımız kodda karşılaşabileceğimiz tek hata ValueError‘dur, şu şekilde kodumuzu güncelleyebiliriz.

try:
    veri = input("sayı giriniz\n")
    veri = int(veri)
    print(veri)
except ValueError:
    print("karakter değil sayı giriniz")

     Bugün ki dersi burada noktalıyoruz. Diğer ders görüşmek üzere. Sevgiler, saygılar sunarım.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir