13kosullu durumlar.fw min

Python Ders 13 | Koşullu Durumlar (if-elif-else)

Bu bölümde inceleyeceğimiz ‘koşullu durumlar’ konusu, tabir yerindeyse, Python’da boyut atlamamızı sağlayacak.

O halde hiç vakit kaybetmeden yola koyulalım…

Şimdiye kadar öğrendiğimiz Python bilgilerini kullanarak şöyle bir program yazabileceğimizi biliyorsunuz:

yaş = 15

print("""Programa hoşgeldiniz!

Programımızı kullanabilmek için en az
13 yaşında olmalısınız.""")

print("Yaşınız: ", yaş)

Önceki derslerde öğrendiğimiz input() fonksiyonu yardımıyla yukarıdaki programın üzerindeki yavanlığı bir nebze de olsa atabilir, bu programı rahatlıkla çok sesli bir hale getirebilir, yani kullanıcıyla etkileşim içine girebiliriz.

print("""Programa hoşgeldiniz!

Programımızı kullanabilmek için en az
13 yaşında olmalısınız.""")

print("Lütfen yaşınızı girin.\n")

yaş = input("Yaşınız: \t")

print("Yaşınız: ", yaş)

Tıpkı bir önceki uygulamada olduğu gibi, burada da yaptığımız şey çok basit. İlk örnekte yaş değişkeninin değerini kendimiz elle yazmıştık.

İkinci örnekte ise bu yaş değişkenini kullanıcıdan alıyoruz ve tıpkı ilk örnekte olduğu gibi, bu değişkenin değerini ekrana yazdırıyoruz.

Yukarıda verdiğimiz örneklerle nereye varmaya çalıştığımızı az çok tahmin etmişsinizdir. Dikkat ederseniz yukarıda sözünü ettiğimiz şey koşullu bir durum.

Yani aslında yapmak istediğimiz şey, kullanıcının yaşını denetleyip, onun programa kabul edilmesini 13 yaşından büyük olma koşuluna bağlamak.

İşte bu bölümde biz bu tür koşullu durumlardan söz edeceğiz.

Koşul Deyimleri

Hiç kuşkusuz, koşula bağlı durumlar Python’daki en önemli konulardan biridir. Giriş bölümünde bahsettiğimiz koşullu işlemleri yapabilmek için ‘koşul deyimleri’ adı verilen birtakım araçlardan yararlanacağız.

Gelin şimdi bu araçların neler olduğunu görelim.

if

Python programlama dilinde koşullu durumları belirtmek için üç adet deyimden yararlanıyoruz:

  • if
  • elif
  • else

İsterseniz önce if deyimi ile başlayalım…

İngilizce bir kelime olan ‘if’, Türkçede ‘eğer’ anlamına gelir. Anlamından da çıkarabileceğimiz gibi, bu kelime bir koşul bildiriyor.

Yani ‘eğer bir şey falanca ise…’ ya da ‘eğer bir şey filanca ise…’ gibi… İşte biz Python’da bir koşula bağlamak istediğimiz durumları if deyimi aracılığıyla göstereceğiz.

Gelin isterseniz bu deyimi nasıl kullanacağımıza dair ufacık bir örnek vererek işe başlayalım:

Öncelikle elimizde şöyle bir değişken olsun:

n = 255

Yukarıda verdiğimiz değişkenin değerinin bir karakter dizisi değil, aksine bir sayı olduğunu görüyoruz. Şimdi bu değişkenin değerini sorgulayalım:

if n > 10:

Burada sayının 10’dan büyük olup olmadığına bakıyoruz.

Burada gördüğümüz > işaretinin ne demek olduğunu açıklamaya gerek yok sanırım. İsterseniz hemen şurada araya girip bu işaretleri yeniden hatırlayalım:

İşleçAnlamı
>büyüktür
<küçüktür
>=büyük eşittir
<=küçük eşittir
==eşittir
!=eşit değildir

Gördüğünüz gibi hiçbiri bize yabancı gelecek gibi değil. Yalnızca en sondaki ‘eşittir’ (==) ve ‘eşit değildir’ (!=) işaretleri biraz değişik gelmiş olabilir. Burada ‘eşittir’ işaretinin = olmadığına dikkat edin.

Python’da = işaretini değer atama işlemleri için kullanıyoruz. == işaretini ise iki adet değerin birbirine eşit olup olmadığını denetlemek için… Mesela:

>>> a = 26

Burada değeri 26 olan a adlı bir değişken belirledik. Yani a değişkenine değer olarak 26 sayısını atadık.

Ayrıca burada, değer atama işleminin ardından Enter tuşuna bastıktan sonra Python hiçbir şey yapmadan bir alt satıra geçti. Bir de şuna bakalım:

>>> a == 26

True

Burada ise yaptığımız şey a değişkeninin değerinin 26 olup olmadığını sorgulamak a == 26 komutunu verdikten sonra Python bize True diye bir çıktı verdi. Bu çıktının anlamını biraz sonra öğreneceğiz.

Ne diyorduk?
if n > 10:

Bu ifadeyle Python’a şöyle bir şey demiş oluyoruz:

Eğer n sayısının değeri 10’dan büyükse

Burada kullandığımız işaretlere dikkat edin. En sonda bir adet : işaretinin olduğunu gözden kaçırmıyoruz.

Dedik ki, if n > 10: ifadesi, ‘eğer n değişkeninin değeri 10’dan büyükse…’ anlamına gelir. Bu ifadenin eksik olduğu apaçık ortada. Yani belli ki bu cümlenin bir de devamı olması gerekiyor. O halde biz de devamını getirelim:

if n > 10:
    print("sayı 10'dan büyüktür!")

Dikkat ederseniz, ikinci satırı ilk satıra göre girintili yazdık. Python programlama dilinde girintiler çok büyük önem taşır. Hatta ne kadarlık bir girinti verdiğiniz bile önemlidir.

Eğer kullandığınız metin düzenleyici, satırları otomatik olarak girintilemiyorsa sizin bu girintileme işlemini elle yapmanız gerekecektir.

Genel kural olarak 4 boşlukluk bir girintileme uygun olacaktır. Girintileme işlemini klavyedeki sekme (Tab) tuşuna basarak da yapabilirsiniz.

Eğer yukarıdaki if bloğunu bir metin düzenleyici içine değil de doğrudan etkileşimli kabuğa yazmışsanız bazı şeyler dikkatinizi çekmiş olmalı. Etkileşimli kabukta if sayı > 10: satırını yazıp Enter tuşuna bastığınızda şöyle bir görüntüyle karşılaşmış olmalısınız:

>>> if n > 10:
...

Dikkat ederseniz, >>> işareti, … işaretine dönüştü. Eğer bu noktada herhangi bir şey yazmadan Enter tuşuna basacak olursanız Python size şöyle bir hata mesajı verecektir:

File "<stdin>", line 2
    ^
IndentationError: expected an indented block

… işaretini gördükten sonra yapmamız gereken şey, dört kez boşluk (Space) tuşuna basarak girinti oluşturmak ve if bloğunun devamını yazmak olmalıydı. Yani şöyle:

>>> if n > 10:
...      print("sayı 10'dan büyüktür!")
...

Gördüğünüz gibi, print() fonksiyonunu yazıp Enter tuşuna bastıktan sonra yine … işaretini gördük. Ama bizim yazacak başka bir kodumuz olmadığı için tekrar Enter tuşuna basıyoruz ve nihai olarak şöyle bir görüntü elde ediyoruz:

>>> if n > 10:
...      print("sayı 10'dan büyüktür!")
...
sayı 10'dan büyüktür!
>>>
Şimdi metin düzenleyicimizi açarak daha mantıklı şeyler yazmaya çalışalım. Değişkeni biz belirlemek yerine kullanıcıya belirleteceğiz:
sayı = int(input("Bir sayı giriniz: "))

if sayı > 10:
    print("Girdiğiniz sayı 10'dan büyüktür!")

if sayı < 10:
    print("Girdiğiniz sayı 10'dan küçüktür!")

if sayı == 10:
    print("Girdiğiniz sayı 10'dur!")

Gördüğünüz gibi, art arda üç adet if bloğu kullandık. Bu kodlara göre, eğer kullanıcının girdiği sayı 10’dan büyükse, ilk if bloğu işletilecek; eğer sayı 10’dan küçükse ikinci if bloğu işletilecek; eğer sayı 10’a eşit ise üçüncü if bloğu işletilecektir.

Yukarıdaki örnekte input() ile gelen karakter dizisini, int() fonksiyonu yardımıyla bir sayıya dönüştürdüğümüze dikkat edin.

if deyimlerini kullanıcı adı veya parola denetlerken de kullanabiliriz. Mesela şöyle bir program taslağı yazabiliriz:

print("""
Dünyanın en gelişmiş e.posta hizmetine
hoşgeldiniz. Yalnız hizmetimizden
yararlanmak için önce sisteme giriş
yapmalısınız.
""")

parola = input("Parola: ")

if parola == "12345678":
    print("Sisteme Hoşgeldiniz!")

Gördüğünüz gibi, programın başında üç tırnak işaretlerinden yararlanarak uzun bir metni kullanıcıya gösterdik.

Eğer kullanıcı, kendisine parola sorulduğunda cevap olarak “12345678” yazarsa kullanıcıyı sisteme alıyoruz.

Böylece Python’daki koşullu durumlar üzerindeki incelememizin ilk ve en önemli aşamasını geride bırakmış olduk.

Daha önce de söylediğimiz gibi, if deyimi dışında Python’da koşullu durumları ifade etmek için kullandığımız, elif ve else adlı iki deyim daha vardır. Bunlar if ile birlikte kullanılırlar.

Gelin isterseniz bu iki deyimden, adı elif olana bakalım.

elif

Python’da, if deyimleriyle birlikte kullanılan ve yine koşul belirten bir başka deyim de elif deyimidir. Buna şöyle bir örnek verebiliriz:

yaş = int(input("Yaşınız: "))

if yaş == 18:
    print("18 iyidir!")

elif yaş < 0:
    print("Yok canım, daha neler!...")

elif yaş < 18:
    print("Genç bir kardeşimizsin!")

elif yaş > 18:
    print("Eh, artık yaş yavaş yavaş kemale eriyor!")

Yukarıdaki örneği şöyle yazmayı da deneyebilirsiniz:

yaş = int(input("Yaşınız: "))

if yaş == 18:
    print("18 iyidir!")

if yaş < 0:
    print("Yok canım, daha neler!...")

if yaş < 18:
    print("Genç bir kardeşimizsin!")

if yaş > 18:
    print("Eh, artık yaş yavaş yavaş kemale eriyor!")

İkinci programda eğer kullanıcı eksi değerli bir sayı girerse hem if yaş < 0 bloğu, hem de if yaş < 18 bloğu çalışacaktır.

Bu durum if ile elif arasındaki çok önemli bir farktan kaynaklanır. Buna göre if bize olası bütün sonuçları listeler, elif ise sadece doğru olan ilk sonucu verir. Bu soyut tanımlamayı biraz daha somutlaştıralım:

a = int(input("Bir sayı giriniz: "))

if a < 100:
    print("verdiğiniz sayı 100'den küçüktür.")

if a < 50:
    print("verdiğiniz sayı 50'den küçüktür.")

if a == 100:
    print("verdiğiniz sayı 100'dür.")

if a > 100:
    print("verdiğiniz sayı 100'den büyüktür.")

if a > 150:
    print("verdiğiniz sayı 150'den büyüktür.")

Yukarıdaki kodları çalıştırdığımızda, doğru olan bütün sonuçlar listelenecektir. Yani mesela kullanıcı 40 sayısını girmişse, ekrana verilecek çıktı şöyle olacaktır:

verdiğiniz sayı 100'den küçüktür.
verdiğiniz sayı 50'den küçüktür.

Burada 40 sayısı hem 100’den, hem de 50’den küçük olduğu için iki sonuç da çıktı olarak verilecektir. Ama eğer yukarıdaki kodları şöyle yazarsak:

a = int(input("Bir sayı giriniz: "))

if a < 100:
    print("verdiğiniz sayı 100'den küçüktür.")

elif a < 50:
    print("verdiğiniz sayı 50'den küçüktür.")

elif a == 100:
    print("verdiğiniz sayı 100'dür.")

elif a > 150:
    print("verdiğiniz sayı 150'den büyüktür.")

elif a > 100:
    print("verdiğiniz sayı 100'den büyüktür.")

Kullanıcının 40 sayısını girdiğini varsaydığımızda, bu defa programımımız yalnızca şu çıktıyı verecektir:

verdiğiniz sayı 100'den küçüktür.

Gördüğünüz gibi, elif deyimlerini kullandığımız zaman, ekrana yalnızca doğru olan ilk sonuç veriliyor, öteki koşul bloklarını incelemeyi bırakıyor. 

if deyimlerini arka arkaya sıraladığımızda ise, Python bütün olasılıkları tek tek değerlendirip, geçerli olan bütün sonuçları ekrana döküyor.

Şimdiye kadar verdiğimiz örneklerden de rahatlıkla anlayabileceğiniz gibi, ilk koşul bloğunda asla elif deyimi kullanılamaz. Bu deyimin kullanılabilmesi için kendisinden önce en az bir adet if bloğu olmalıdır.

elif’i de incelediğimize göre, koşul bildiren deyimlerin sonuncusuna göz atabiliriz: else

else

Şimdiye kadar Python’da koşul bildiren iki deyimi öğrendik. Bunlar if ve elif idi. Bu bölümde ise koşul deyimlerinin sonuncusu olan else deyimini göreceğiz.

Öğrendiğimiz şeyleri şöyle bir gözden geçirecek olursak, temel olarak şöyle bir durumla karşı karşıya olduğumuzu görürüz:

if falanca:
    bu işlemi yap

if filanca:
    şu işlemi yap

Veya şöyle bir durum:

if falanca:
    bu işlemi yap

elif filanca:
    şu işlemi yap

Bu bölümde göreceğimiz else deyimi, yukarıdaki tabloya bambaşka bir boyut kazandırıyor.

Her durum için bir if bloğu yazmak bir süre sonra yorucu ve sıkıcı olacaktır. İşte bu noktada devreye else deyimi girecek. else’in anlamı kabaca şudur:

Eğer yukarıdaki koşulların hiçbiri gerçekleşmezse…

Gelin isterseniz bununla ilgili şöyle bir örnek verelim:

soru = input("Bir meyve adı söyleyin bana:")

if soru == "elma":
    print("evet, elma bir meyvedir...")

elif soru == "karpuz":
    print("evet, karpuz bir meyvedir...")

elif soru == "armut":
    print("evet, armut bir meyvedir...")

else:
    print(soru, "gerçekten bir meyve midir?")

Eğer kullanıcı yukarıda belirlenen meyve adlarından hiç birini girmez, bunların yerine bambaşka bir şey yazarsa, o zaman else bloğu içinde belirtilen işlemi gerçekleştir.

Dikkat ederseniz yukarıdaki kodlarda if deyimlerini art arda sıralamak yerine ilk if’ten sonra elif ile devam ettik. Peki şöyle bir şey yazarsak ne olur?

soru = input("Bir meyve adı söyleyin bana:")

if soru == "elma":
    print("evet, elma bir meyvedir...")

if soru == "karpuz":
    print("evet, karpuz bir meyvedir...")

if soru == "armut":
    print("evet, armut bir meyvedir...")

else:
    print(soru, "gerçekten bir meyve midir?")

Eğer yukarıda olduğu gibi if deyimlerini art arda sıralar ve son olarak da bir else bloğu tanımlarsak, ekrana ilk bakışta anlamsız gibi görünen bir çıktı verilecektir:

evet, elma bir meyvedir...
elma gerçekten bir meyve midir?

Soruya ‘elma’ cevabını verdiğimizi düşünelim. Bu durumda, Python ilk olarak ilk if bloğunu değerlendirecek ve soruya verdiğimiz cevap ‘elma’ olduğu için evet, elma bir meyvedir… çıktısını verecektir.

else deyimi sadece bir önceki if deyimini dikkate alarak işlem yapar. Yani yukarıdaki örnekte kullanıcının verdiği cevap ‘armut’ olmadığı için else deyiminin olduğu blok çalışmaya başlar.

Yukarıdaki örneğe ‘armut’ cevabını verirseniz ne demek istediğimi biraz daha iyi anlayabilirsiniz. ‘armut’ cevabı verilmesi durumunda sadece if soru == "armut" ifadesinin olduğu blok çalışır, else bloğu ise çalışmaz.

Çünkü dediğim gibi, önceki son if bloğunu dikkate alır ve sanki yukarıdaki örnek şöyleymiş gibi davranır:

if soru == "armut":
    print("evet, armut bir meyvedir...")

else:
    print(soru, "gerçekten bir meyve midir?")

Yalnız bu dediğimizden, else ifadesi if ile birlikte kullanılmaz, anlamı çıkarılmamalı. Mesela şöyle bir örnek yapılabilir:

soru = input("Programdan çıkmak istediğinize emin misiniz? \
Eminseniz 'e' harfine basın : ")

if soru == "e":
    print("Güle güle!")

else:
    print("Peki, biraz daha sohbet edelim!")

Burada eğer kullanıcının cevabı ‘e’ ise if bloğu işletilecek, eğer cevap ‘e’ dışında herhangi bir şey ise else bloğu çalışacaktır.

Dolayısıyla, eğer programınızda bir else bloğuna yer verecekseniz, ondan önce gelen koşullu durumların ilkini if ile sonrakileri ise elif ile bağlayın. Yani:

if koşul_1:
    sonuç_1

elif koşul_2:
    sonuç_2

elif koşul_3:
    sonuç_3

else:
    sonuç_4

Ama eğer else bloğundan önce sadece tek bir koşul bloğu yer alacaksa bunu if ile bağlayın. Yani:

if koşul_1:
    sonuç_1

else:
    sonuç_2

Bir önceki bölümde elif deyiminin tam olarak ne işe yaradığını anlamamızı sağlayacak bir örnek vereceğimizi söylemiştik.

Şimdi bu örneğe bakalım:
boy = int(input("boyunuz kaç cm?"))

if boy < 170:
    print("boyunuz kısa")

elif boy < 180:
    print("boyunuz normal")

else:
    print("boyunuz uzun")

Diyelim ki kullanıcı ‘165’ cevabını verdi. Python bu 165 sayısının 170’ten küçük olduğunu görünce boyunuz kısa cevabını verecek, öteki satırları değerlendirmeyecektir

165 sayısı, elif ile gösterdiğimiz koşullu duruma da uygun olduğu halde (165 < 180), koşul ilk blokta karşılandığı için ikinci blok değerlendirmeye alınmayacaktır.

Böylece Python’da ifelif ve else deyimlerini incelemiş olduk. Ancak tabii ki bu deyimlerle işimiz henüz bitmedi. Elimizdeki bilgiler şimdilik bu deyimleri ancak bu kadar incelememize yetiyor.

Örnek Uygulama

Önceki derslerimizde len() fonksiyonunu anlatırken şöyle bir program tasarısından bahsetmiştik hatırlarsanız:

Diyelim ki sisteme kayıt için kullanıcı adı ve parola belirlenmesini isteyen bir program yazıyorsunuz. Yazacağınız bu programda, belirlenebilecek kullanıcı adı ve parolanın toplam uzunluğu 40 karakteri geçmeyecek.

O zaman henüz koşullu durumları öğrenmemiş olduğumuz için, yukarıda bahsettiğimiz programın ancak şu kadarlık kısmını yazabilmiştik:

kullanıcı_adı = input("Kullanıcı adınız: ")
parola        = input("Parolanız       : ")

toplam_uzunluk = len(kullanıcı_adı) + len(parola)

Artık koşullu durumları öğrendiğimize göre bu programı eksiksiz olarak yazabiliriz. Şu kodları dikkatlice inceleyin:

kullanıcı_adı = input("Kullanıcı adınız: ")
parola        = input("Parolanız       : ")

toplam_uzunluk = len(kullanıcı_adı) + len(parola)

mesaj = "Kullanıcı adı ve parolanız toplam {} karakterden oluşuyor!"

print(mesaj.format(toplam_uzunluk))

if toplam_uzunluk > 40:
    print("Kullanıcı adınız ile parolanızın ",
          "toplam uzunluğu 40 karakteri geçmemeli!")
else:
    print("Sisteme hoşgeldiniz!")

Burada öncelikle kullanıcıdan kullanıcı adı ve parola bilgilerini alıyoruz. Daha sonra da kullanıcıdan gelen bu bilgilerin toplam karakter uzunluğunu hesaplıyoruz. Bunun için len() fonksiyonundan yararlanmamız gerektiğini hatırlıyor olmalısınız.

Eğer toplam uzunluk 40 karakterden fazla iseif bloğunda verilen mesajı gösteriyoruz. Bunun dışındaki bütün durumlarda ise else bloğunu devreye sokuyoruz.

Bu eğitim seti Kaynak tarafından oluşturulmuştur.

İletişim: admin@herseymi.com
Yazı oluşturuldu 96

Bir Yorum Yazın

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön