Python 3'te Koşullu İfadeler Nasıl Yazılır
Giriş
Koşullu ifadeler (conditional statements) her programlama dilinin bir parçasıdır. Koşullu ifadeler sayesinde, belirli durumlara göre kodun bazen çalışmasını, bazen ise çalışmamasını sağlayabiliriz.
Programdaki her ifadeyi, yukarıdan aşağıya sırayla çalıştırdığımızda belirli koşulları değerlendirmesi için programa herhangi bir komut vermemiş oluruz. Koşullu ifadeler kullanarak programların belirli koşulların karşılanıp karşılanmadığını değerlendirmesini ve ardından ne yapması gerektiğini belirtmesini sağlayabiliriz.
Koşullu ifadelere ihtiyaç duyacağımız bazı durumlara bakalım:
- Eğer öğrenci sınavında %65'in üzerinde bir not alırsa, başarılı olduğunu rapor et; değilse, başarısız olduğunu rapor et.
- Eğer hesabında para varsa, faiz hesapla; yoksa ceza ücreti uygula.
- Eğer 10 veya daha fazla portakal alırlarsa, %5 indirim hesapla; daha az alırlarsa indirim uygulama.
Bu şekilde koşulları değerlendirip koşullara göre çalışacak kodu belirleyerek koşullu kod (conditional code) yazmış oluruz.
Bu eğitim, Python programlama dilinde koşullu ifadelerin nasıl yazılacağını ele alacak.
If İfadesi
İlk olarak if
ifadesiyle başlayacağız; bu ifade, bir ifadenin doğru (true) ya da yanlış (false) olup olmadığını değerlendirir ve sadece doğru olduğu durumda kodu çalıştırır.
Bilgi: Bu eğitimdeki örnek kodu takip etmek için yerel sisteminizde python3 komutunu çalıştırarak bir Python etkileşimli kabuğu (interactive shell) açın. Ardından, örnekleri >>>
isteminden sonra ekleyerek kopyalayabilir, yapıştırabilir veya düzenleyebilirsiniz.
Bir düz metin düzenleyicisinde yeni bir dosya açın ve aşağıdaki kodu yazın:
not = 70
if not >= 65:
print("Geçer not")
Bu kodda not değişkenine (variable) 70 tam sayı değeri atadık. Ardından, if ifadesini kullanarak not değişkeninin 65'ten büyük veya eşit olup olmadığını değerlendiriyoruz. Eğer bu koşul sağlanırsa, programa Geçer not ifadesini yazdırmasını söylüyoruz.
Programı not.py
olarak kaydedin ve terminal penceresinden python not.py
komutuyla çalıştırın.
Bu durumda, 70 notu 65'ten büyük veya eşit olduğundan, programı çalıştırdığınızda şu çıktıyı alacaksınız:
Çıktı
Geçer not
Şimdi, programın sonucunu değiştirmek için not değişkeninin değerini 60 olarak değiştirelim:
not.py
not = 60
if not >= 65:
print("Geçer not")
Bu kodu kaydedip çalıştırdığımızda, hiçbir çıktı almayız çünkü koşul sağlanmadı ve programa başka bir ifade çalıştırması gerektiğini belirtmedik.
Başka bir örnek olarak, banka hesabı bakiyesinin 0'ın altında olup olmadığını hesaplayalım. account.py adlı bir dosya oluşturalım ve aşağıdaki programı yazalım:
account.py
bakiye = -5
if bakiye < 0:
print("Bakiye 0'ın altında, şimdi para ekleyin veya ceza ücreti ödersiniz.")
python account.py
komutuyla programı çalıştırdığımızda şu çıktıyı alırız:
Çıktı
Bakiye 0'ın altında, şimdi para ekleyin veya ceza ücreti ödersiniz.
Bu programda bakiye değişkenine -5
değerini verdik, bu da 0’dan küçüktür. Bakiyenin if
ifadesindeki koşulu (bakiye < 0
) sağladığı için, kodu kaydedip çalıştırdığımızda bu string çıktıyı alırız. Yine, bakiyeyi 0 veya pozitif bir değere değiştirirsek, herhangi bir çıktı almayız.
Else İfadesi
Programın, if ifadesi yanlış olarak değerlendirilse bile bir şey yapmasını isteyebiliriz. Not örneğinde, geçer ya da kalır sonuçlarını her iki durumda da almak isteyeceğiz.
Bunu yapmak için yukarıdaki not koşuluna bir else
ifadesi ekleyeceğiz ve bu yapı şu şekilde kurulur:
not.py
not = 60
if not >= 65:
print("Geçer not")
else:
print("Kalan not")
Yukarıdaki not değişkeni 60
değerine sahip olduğu için, if
ifadesi yanlış olarak değerlendirilir ve program Geçer not
ifadesini yazdırmaz. Sonraki else
ifadesi ise programa bir şey yapmasını söyler.
Programı kaydedip çalıştırdığımızda şu çıktıyı alırız:
Çıktı:
Kalan not
Programı 65
veya daha yüksek bir değere değiştirdiğimizde ise Geçer not çıktısını alırız.
Banka hesabı örneğine else
ifadesini eklemek için kodu şu şekilde yeniden yazarız:
account.py
bakiye = 522
if bakiye < 0:
print("Bakiye 0'ın altında, şimdi para ekleyin veya ceza ücreti ödersiniz.")
else:
print("Bakiyeniz 0 veya üzerinde.")
Çıktı:
Bakiyeniz 0 veya üzerinde.
Burada, bakiyeyi pozitif bir sayıya değiştirdik, bu yüzden else ifadesi yazdırılacaktır. İlk if ifadesini yazdırmak için değeri negatif bir sayıya değiştirebiliriz.
Bir if
ifadesi ile else
ifadesini birleştirerek, koşul sağlansa da sağlanmasa da belirli bir kodu çalıştıracak iki parçalı bir koşullu ifade oluşturmuş olursunuz.
Else if İfadesi
Şu ana kadar, her if
ifadesinin yalnızca doğru ya da yanlış olarak iki olasılığı değerlendirdiği bir Boolean yapısını sunduk. Çoğu durumda, bir programın iki olasılıktan daha fazla sonucu değerlendirmesini isteyeceğiz. Bunun için else if ifadesi, Python'da elif
olarak yazılır. Elif
ifadesi if ifadesine benzer ve başka bir durumu değerlendirecektir.
Banka hesabı programında, üç farklı durum için üç ayrı çıktı almak isteyebiliriz:
- Bakiye 0'ın altında
- Bakiye 0'a eşit
- Bakiye 0'ın üzerinde
Elif
İfadesi (Elif Statement), if
ifadesi ile else
ifadesi arasında yer alacak şekilde aşağıdaki gibi konumlandırılır:account.py
. . .
if bakiye < 0:
print("Bakiye 0'ın altında, şimdi para ekleyin veya ceza ücreti ödersiniz.")
elif bakiye == 0:
print("Bakiye 0'a eşit, yakında para ekleyin.")
else:
print("Bakiyeniz 0 veya üzerinde.")
Artık programı çalıştırdığımızda üç olası çıktı elde edebiliriz:
- Eğer bakiye değişkeni 0'a eşitse, elif ifadesinden şu çıktıyı alırız: (Bakiye 0'a eşit, yakında para ekleyin.)
- Eğer bakiye değişkeni pozitif bir sayı olarak ayarlanmışsa, else ifadesinden şu çıktıyı alırız: (Bakiyeniz 0 veya üzerinde.)
- Eğer bakiye değişkeni negatif bir sayı olarak ayarlanmışsa, if ifadesindeki string olan şu çıktı elde edilir: (Bakiye 0'ın altında, şimdi para ekleyin veya ceza ücreti ödersiniz.)
Peki, üçten fazla ihtimal olduğunda ne yapacağız? Bunun için kodumuza birden fazla elif
ifadesi ekleyebiliriz.
not.py
programında, sayısal not aralıklarına karşılık gelen harf notları olacak şekilde kodu yeniden yazalım:
- 90 veya üstü, A notuna eşdeğer
- 80-89, B notuna eşdeğer
- 70-79, C notuna eşdeğer
- 65-69, D notuna eşdeğer
- 64 veya daha düşük, F notuna eşdeğer
Bu kodu çalıştırmak için bir if ifadesine, üç elif ifadesine ve başarısız durumları ele alacak bir else ifadesine ihtiyacımız olacak.
Yukarıdaki örnekteki kodu, her bir harf notunu yazdıran stringlerle yeniden yazalım. else ifadesini aynı şekilde bırakabiliriz.not.py
. . .
if not >= 90:
print("A notu")
elif not >=80:
print("B notu")
elif not >=70:
print("C notu")
elif not >= 65:
print("D notu")
else:
print("Kalan not")
Elif
ifadeleri sırayla değerlendirileceğinden, ifadelerimizi oldukça basit tutabiliriz. Bu program aşağıdaki adımları tamamlamaktadır:
- Eğer not 90'dan büyükse, program
A notu
yazdırır; eğer not 90'dan küçükse program bir sonraki ifadeye geçer… - Eğer not 80 veya daha büyükse, program
B notu
yazdırır; eğer not 79 veya daha düşükse program bir sonraki ifadeye geçer… - Eğer not 70 veya daha büyükse, program
C notu
yazdırır; eğer not 69 veya daha düşükse program bir sonraki ifadeye geçer… - Eğer not 65 veya daha büyükse, program
D notu
yazdırır; eğer not 64 veya daha düşükse program bir sonraki ifadeye geçer… - Program, yukarıdaki koşulların hiçbiri sağlanmadığı için
Kalan not
ifadesini yazdırır.
İç İçe if İfadeleri
If
, elif
ve else
ifadelerine hâkim olduktan sonra, iç içe koşullu ifadelere (nested conditional statements) geçebilirsiniz. İç içe if ifadelerini, birinci koşul doğru olarak değerlendirilirse, ikinci bir koşulu kontrol etmek istediğimiz durumlarda kullanabiliriz. Bunun için bir if-else ifadesinin içine başka bir if-else ifadesi yazabiliriz. İç içe bir if ifadesinin sözdizimine (syntax) bakalım:
if statement1: # dış if ifadesi (outer if statement)
print("doğru")
if nested_statement: # iç if ifadesi (nested if statement)
print("evet")
else: # iç else ifadesi (nested else statement)
print("hayır")
else: # dış else ifadesi (outer else statement)
print("yanlış")
Bu koddan birkaç farklı çıktı alabiliriz:
- Eğer
statement1
doğru olarak değerlendirilirse, programnested_statement'in
de doğru olup olmadığını değerlendirir. Her iki durum da doğruysa, çıktı şöyle olur:
Çıktı
doğru
evet
- Ancak, eğer
statement1
doğru, fakatnested_statement
yanlış olarak değerlendirilirse, o zaman çıktı şöyle olur:
Çıktı
doğru
hayır
- Eğer
statement1
yanlış olarak değerlendirilirse, iç if-else ifadesi çalışmaz ve yalnızcaelse
ifadesi çalışır, sonuç olarak çıkan ifade şöyle olur:
Çıktı
yanlış
Kodumuzun içine birden fazla if ifadesi de ekleyebiliriz:
if statement1: # dış if (outer if)
print("merhaba dünya")
if nested_statement1: # birinci iç if (first nested if)
print("evet")
elif nested_statement2: # birinci iç elif (first nested elif)
print("belki")
else: # birinci iç else (first nested else)
print("hayır")
elif statement2: # dış elif (outer elif)
print("merhaba galaksi")
if nested_statement3: # ikinci iç if (second nested if)
print("evet")
elif nested_statement4: # ikinci iç elif (second nested elif)
print("belki")
else: # ikinci iç else (second nested else)
print("hayır")
else: # dış else (outer else)
statement("merhaba evren")
Yukarıdaki kodda, her if ifadesinin içinde bir elif ifadesine ek olarak bir iç içe if ifadesi (nested if statement) bulunmaktadır. Bu, her koşul içinde daha fazla seçeneğin değerlendirilmesine olanak tanır.
not.py programında iç içe if ifadelerine (nested if statements) bir örnek görelim. İlk olarak bir notun geçip geçmediğini (65%'ten büyük veya eşit olup olmadığını) kontrol edebiliriz, ardından sayısal notun hangi harf notuna eşdeğer olması gerektiğini değerlendirebiliriz. Eğer not geçmezse, harf notlarını değerlendirmeye gerek yoktur; programın notun kaldığını rapor etmesi yeterlidir. İç içe if ifadesiyle değiştirilmiş kodumuz şu şekilde görünecektir:not.py
. . .
if not >= 65:
print("Geçen not:")
if not >= 90:
print("A")
elif not >=80:
print("B")
elif not >=70:
print("C")
elif not >= 65:
print("D")
else:
print("Kalan not")
Kodda not değişkenini 92 değeriyle çalıştırırsak, ilk koşul sağlanır ve program "Geçen not:" ifadesini yazdırır. Ardından, notun 90 veya daha büyük olup olmadığını kontrol eder ve bu koşul da sağlandığından "A" harf notunu yazdırır.
not değişkenini 60 olarak ayarlayıp kodu çalıştırırsak, ilk koşul sağlanmaz, bu yüzden program iç içe if ifadelerini atlayarak else ifadesine geçer ve "Kalan not" ifadesini yazdırır.
Elbette bu yapı daha fazla seçenek ekleyebilir ve ikinci bir iç içe if ifadesi katmanı kullanabiliriz. Örneğin, A+, A ve A- gibi ayrılmış notları değerlendirmek isteyebiliriz. Önce notun geçtiğini, sonra notun 90 veya üzerinde olduğunu kontrol edebiliriz; ardından örneğin 96'nın üzerinde bir not için A+ çıktısı verebiliriz: not.py
. . .
if not >= 65:
print("Geçen not:")
if not >= 90:
if not > 96:
print("A+")
elif not > 93 and not <= 96:
print("A")
elif not >= 90:
print("A-")
. . .
Yukarıdaki kodda, not değişkeni 96 olarak ayarlandığında program aşağıdaki işlemleri gerçekleştirecektir:
- Notun 65'ten büyük veya eşit olup olmadığını kontrol eder (doğru)
- "Geçen not"
ifadesini yazdırır:
- Notun 90'dan büyük veya eşit olup olmadığını kontrol eder (doğru)
- Notun 96'dan büyük olup olmadığını kontrol eder (yanlış)
- Notun 93'ten büyük ve aynı zamanda 96'ya eşit veya daha küçük olup olmadığını kontrol eder (doğru)
- "A" harf notunu yazdırır
- Bu iç içe koşullu ifadelerden çıkar ve kalan kodla devam eder
Bu durumda programın çıktısı şu şekilde olacaktır:
Çıktı
Geçen not:
A
İç içe if ifadeleri (nested if statements), kodunuza çeşitli seviyelerde özel koşullar ekleme imkanı sağlar.
Sonuç
If ifadesi (if statement) gibi koşullu ifadeler (conditional statements) kullanarak programınızın neyi çalıştıracağını daha iyi kontrol edebilirsiniz. Koşullu ifadeler programa belirli bir koşulun yerine getirilip getirilmediğini değerlendirmesini söyler. Koşul sağlanırsa program belirli kodları çalıştırır, ancak sağlanmazsa diğer kodlara devam eder.
Lisa Tagliaferri tarafından yazılan How To Write Conditional Statements in Python 3a Programming makalesinin düzenlenmiş çevirisi
Daha Fazla Oku:
- Sonraki Makale: Python 3'te While Döngüleri Nasıl Oluşturulur
- Önceki Makale: Python 3'te Modüller Nasıl Yazılır