Bu makalemizde python’da bir uygulama geliştirirken hangi durumlarda nasıl karar vereceğimizi öğreneceğimiz Python’da karar yapıları veya koşullu ifadelerden(decision structures and conditional statements) bahsedeceğiz
Karar yapıları veya koşullu ifadeler, bir programın işleyişini kontrol etmek, bazı durumları değerlendirmek ve belirli koşullara göre farklı işlemler gerçekleştirmek, programlama dünyasında sıkça kullanılan bir yaklaşımdır. Python, bu tür karar yapılarını oluşturmanızı sağlayan güçlü bir programlama dilidir. Bu makalemizde, Python’da kullanabileceğiniz karar yapılarını ve bu yapıları nasıl kullanabileceğinizi örnekleriyle birlikte keşfedeceğiz.
1. İf-Else Yapısı:
En temel karar yapısı olan “if-else” ifadesi, belirli bir koşulun doğru veya yanlış olmasına bağlı olarak farklı kod bloklarını çalıştırmanızı sağlar. İf-else yapısının genel sözdizimi aşağıdaki gibidir:
1 2 3 4 |
if koşul: # Koşul doğruysa yapılacaklar else: # Koşul yanlışsa yapılacaklar |
Örnek bir kullanım gösterirsek:
1 2 3 4 5 6 |
sayi=10 if sayi>0: print("sayi pozitiftir") else: print("sayı negatif veya sıfırdır") |
Burada belirtilen sayi değişkenindeki degerin pozitif durumunu sağlıyorsa pozitif olması durumda ekranda sayı pozitiftir yazısı gözükürken, pozitif olmaması durumunda da sayı negatif veya sıfırdır ibaresini göstermesini sağladık.
Kodumuzun ekran çıktısı aşağıdaki gibidir:
2. İç İçe İf-Else Yapısı:
Daha karmaşık durumları ele almak için, “if-else” ifadelerini iç içe kullanabilirsiniz. Bu, bir koşulun doğru veya yanlış olmasına bağlı olarak birden çok farklı kod bloğunun çalıştırılmasını sağlar. Şimdi bir örnek yaparak bunu açıklayalım:
1 2 3 4 5 6 7 8 9 10 |
sayi=10 if sayi>0: print("sayı pozitiftir") if sayi%2==0: print("sayi bir çift sayıdır") else: print("sayı negatif bir sayıdır") else: print("sayi negatif veya sıfırdır") |
Bu örnekte, “sayi” değeri pozitif olduğunda, program önce ” sayi pozitiftir.” çıktısını verir. Ardından, ” sayi ” çift bir sayıysa “sayi bir çift sayıdır.” çıktısını verir; aksi halde ” sayi bir tek sayıdır.” çıktısını verir. Eğer ” sayi ” negatif veya sıfırsa, ” sayi negatif veya sıfır bir sayıdır.” çıktısını verir.
kodumuzun ekran çıktısı aşağıdaki gibidir:
3. Elif Yapısı:
Bazı durumlarda, birden çok koşulu değerlendirmeniz gerekebilir. Bu durumda, “elif” ifadesini kullanarak birden çok alternatif koşul oluşturabilirsiniz.
1 2 3 4 5 6 7 8 |
sayi = 10 if sayi > 0: print("sayi pozitif bir sayıdır.") elif sayi < 0: print("sayi negatif bir sayıdır.") else: print("sayi sıfırdır.") |
Bu örnekte, “sayi” değeri pozitifse, program ” sayi pozitif bir sayıdır.” çıktısını verir. Eğer ” sayi ” negatifse, ” sayi negatif bir sayıdır.” çıktısını verir. Eğer ” sayi ” ne pozitif ne de negatifse, yani sıfırsa, ” sayi sıfırdır.” çıktısını verir.
Kodumuzun ekran çıktısı aşağıdaki gibidir:
4. Switch-Case Yapısı:
Bazı programlama dillerinde bulunan “switch-case” yapısı, belirli bir değişkenin farklı değerlerine bağlı olarak farklı kod bloklarını çalıştırmanızı sağlar. Ancak, Python’da doğrudan bir “switch-case” ifadesi bulunmamaktaydı ve bunun yerine, genellikle “if-elif-else” yapısıyla benzer bir yapı kullanılıyordu yada switch case yapısına benzer dictionary yapısı kullanılarak yapılıyordu ama artık 3.10 python sürümüyle swtich case yapısı match-case yapısı ile kullanılmaya başlanıldı.
Şimdi biz match- case yapısı olmadan if-elif-else ile yapalım:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
def haftanin_gunu(numara): gun = "" if numara == 1: gun = "Pazartesi" elif numara == 2: gun = "Salı" elif numara == 3: gun = "Çarşamba" elif numara == 4: gun = "Perşembe" elif numara == 5: gun = "Cuma" elif numara == 6: gun = "Cumartesi" elif numara == 7: gun = "Pazar" else: gun = "Geçersiz gün numarası" return gun print(haftanin_gunu(3)) print(haftanin_gunu(8)) |
Bu örnekte, “haftanin_gunu” adında bir fonksiyon tanımladık ve parametre olarak bir gün numarası aldık. Fonksiyon içinde, numaraya göre ilgili gün adını döndürdük. Eğer geçersiz bir numara girilirse, “Geçersiz gün numarası” çıktısını verdik.
Kodumuzun ekran çıktısı aşağıdaki gibidir.
Switch case yapısını Dictionary yapısı ile yapalım:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import time print(""" 1:"Bakiye Sorgulama", 2:"Para Yatırma", 3:"Para Çekme", 4:"Hesap Transferi", 5:"Kart İade" 6:"çıkış """) def switch(secim): case={} while True: try: case={ 1:"Bakiye Sorgulama", 2:"Para Yatırma", 3:"Para Çekme", 4:"Hesap Transferi", 5:"Kart İade", 6:"çıkış yapılıyor", "default":"yanlış bir değer girdniz" } print(case[secim]) break except KeyError: print(case['default']) #hatalı giriş olduğu anda default değeri basıyoruz . break #programın döngüden çıkmasını sağlıyoruz while True: try: secim = int(input("ATM uygulaması için bir tam sayı girin ... : ")) switch(secim) #switch fonksiyonumuzu çağırıyoruz . if secim==6: time.sleep(2) exit() except ValueError: print("Girdiğiniz değer bir tam sayı değil") continue |
Bu kodumuzda gerçek bir atm uygulamasının bir parçasını görüyorsunuz python 10.3 versiyonunda önce switch-case yapısının olmadığını söylemiştik ama ona rağmen ihtiyacımız olduğunda kendi switch fonksiyonumuzu yazıp kullanıcıdan aldığımız değerleri kontrol yapısına sokarak işlemlerimizi yapmış olduk.
Kodumuzun ekran çıktısı aşağıdaki gibidir:
5. Match –Case yapısı:
Python 10.3 sürümünden önce olmayan switch-case özelliği, match-case özelliği ile python’a kazandırılmış olundu Burada structural pattern matching feature, yani Yapısal kalıp eşleştirme özelliği ile anahtar deyimleri ile işlem yaparız. Temel kullanımı :
1 2 3 4 5 6 7 8 9 |
match term: case pattern-1: action-1 case pattern-2: action-2 case pattern-3: action-3 case _: action-default |
burada dikkat edilmesi gereken nokta _(alt çizgi) ile belirtilen durumun default durumuna karşılık geldiğidir.
Şimdi bir örnek yapalım:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def meyveRengi(meyve): match meyve: case "muz": return "sarı" case "portakal": return "turuncu" case "çilek": return "kırmızı" case _: return "Bilinmeyen meyve" print(meyveRengi("muz")) print(meyveRengi("çilek")) print(meyveRengi("Avokado")) |
Bu örnekte, match-case yapısını kullanarak “meyve” değişkeninin değerine göre ilgili renkleri döndüren bir fonksiyon tanımladık. Her bir durum için case ifadesi kullanarak meyve adını kontrol ettik ve ilgili renkleri döndürdük. Bilinmeyen bir meyve girildiğinde ise _ alt çizgi ile belirtilen durumda “Bilinmeyen meyve” mesajını döndürdük. Burada dikkat edilmesi gereken nokta kodumuzu çalıştırdığımız python sürümünün10.3 altında olmaması gerek yoksa match-case yapısını tanıyamaz.
Bu örnekte match-case yapısını kullanarak, birden çok durumu kontrol etmek ve karşılıklı ilişkili sonuçlar döndürmek oldukça kolaydır. Bu yapı, özellikle veri işleme, durum yönetimi veya işlem seçimi gibi durumlarda kullanışlıdır.
Kodumuzun ekran çıktısı aşağıdaki gibidir:
Sonuç olarak, Python’da match-case deyimi ile yapısal örüntü eşleştirmeyi tanıttık. Gereken kod miktarı ve okunabilirlik açısından bir if-elif-else ifadesine göre nasıl avantaj sağlayabileceğini gösterdik. Bu yeni özelliğin burada değinmediğimiz daha birçok özelliği var – girdi olarak bir nesne sağlayabilir (kullandığımız dizeler yerine) ve nesnenin öznitelikleri üzerinde desen eşleştirme yapabilirsiniz.
0 Yorum