Python’da Koşul İfadeleri: “if – elif – else”
Bu dersimizde, Python’da kullanılan koşul ifadeleri olan “if-elif-else” konusunu ele alacağız. Her programlama dilinde olduğu gibi, Python’da da belirli koşullar altında belirli işlemlerin gerçekleştirilmesi gerektiğinde koşul ifadeleri devreye girer.
Python’da Koşul İfadeleri
Hayatımızın her alanında olduğu gibi, programlama dünyasında da karar vermek son derece önemlidir. Günlük yaşamda karşılaştığımız problemleri çözerken belirli koşullar altında kararlar alırız. Benzer şekilde, bir program yazarken de belirli durumlara göre kararlar almak zorundayız. Zira bir program, bilgisayara verilen talimatlardan oluşur. Bu talimatlar, bir görevi yerine getirirken çeşitli kararlar almayı gerektirir. İşte bu nedenle, koşul ifadeleri programlamanın vazgeçilmez bir parçasıdır.
Python’da koşullu ifadeler, bir programın farklı durumlara göre farklı işlemler yapmasını sağlayan önemli bir yapıdır. Bu ifadelerin temelinde if
, elif
ve else
blokları yer alır.
if
: Belirli bir koşulu kontrol etmek için kullanılır. Eğer koşul doğruysa,if
bloğundaki kod çalıştırılır.elif
: Eğerif
koşulu yanlışsa, bu kezelif
koşulu kontrol edilir. Birden fazlaelif
bloğu eklenebilir ve her biri farklı koşulları test edebilir.else
: Eğerif
ve tümelif
koşulları yanlışsa,else
bloğu çalıştırılır. Bu sayede diğer tüm durumlar için bir “varsayılan” davranış belirlenebilir.
Her koşullu yapı, mutlaka bir if
bloğu ile başlar. if
bloğu, belirli bir koşulu kontrol eder ve bu koşul doğru olduğunda, içindeki kod çalıştırılır. Eğer if
koşulu yanlışsa, program diğer olasılıkları değerlendirmek için elif
ve else
bloklarına geçer.
Ancak şuna da özellikle dikkat etmeniz gerekir: Eğer “aynı koşulu” birden fazla if
bloğunda kontrol ederseniz bu durumda en son yazılan if
bloğu geçerli olan son koşulu değerlendiren blok olarak çalışabilir. Çünkü Python her if
bloğunu baştan sona sıralı bir şekilde değerlendirir. Bu nedenle, önceki if
blokları doğru olsa bile, sonrasında yazılmış bir başka if
aynı koşulu tekrar kontrol ettiğinde, onun davranışı sonucu etkileyebilir. Bu tür durumlar, mantıksal karmaşaya ve kodun beklenmedik şekilde çalışmasına neden olur.
Doğru yapılandırılmış bir program yazmak için bir koşul yalnızca tek bir yerde kontrol edilmeli ve çakışmalardan kaçınılmalıdır. Aynı koşul birden fazla açıdan kontrol edilecekse if-elif-else
yapısını kullanmak daha güvenli ve okunabilir bir çözüm sunar. Zaten elif
ve else
blokları yalnızca bir if
bloğu ile birlikte kullanılabilir; tek başlarına bir koşul ifadesi başlatamazlar. Ancak bu bloklar tamamen isteğe bağlıdır. Yani, bir program yalnızca bir if
bloğu ile de çalışabilir. elif
, birden fazla alternatif koşul test etmemize olanak tanırken, else
hiçbir koşulun sağlanmadığı durumlar için varsayılan bir işlem sağlar. Dolayısıyla yalnızca bir kez kullanılabilir ve her zaman en sonda yer almalıdır.
Python “If”
Python’daki “if” anahtar kelimesi, belirli bir koşulun doğru olup olmadığını kontrol etmek için kullanılır. Eğer koşul doğruysa (yani True
), if bloğu içindeki kod çalıştırılır. Zaten İngilizcede de “eğer” anlamına gelen “if” ile adından da anlaşılacağı üzere bir koşula bağlı durum vurgulanır. Örneğin:
x = 10
if x > 5:
print('x, 5’ten büyük')
Bu örnekte, x değişkeninin değeri 10’dur. x > 5 koşulu doğru olduğu için, if bloğu içindeki kod çalıştırılır ve ‘x, 5’ten büyük’ mesajı yazdırılır.
Python’da “If” Koşulunu Tek Satırda Yazımı
Bazı durumlarda “if” koşulunu tek satırda yazmak, kodumuzu daha sade ve okunaklı yapar. Hatta bazen bu gerekli bile olabilir. Ama dikkat! Her zaman değil, sadece basit koşullar için bu yöntemi kullanmak daha iyidir. Çünkü çok fazla koşul varsa, kod karışık hale gelebilir.
Peki nasıl yazacağız bu tek satırlık “if” koşulunu? Örneğin, elimizde bir x
değişkeni var ve bu değişkenin değerinin 10 olup olmadığını kontrol etmek istiyoruz. Eğer x
, 10’a eşitse, ekrana “x 10’a eşittir” yazdırmak istiyoruz. Bunu normalde şöyle yazarız:
x = 10
if x == 10:
print("x 10'a eşittir")
Ancak boşluk bırakmadan direkt yanına yazabiliriz. Bakınız:
x = 10
if x == 10: print("x 10'a eşittir")
İki kod da aynı işlevi görür. Ancak “if” koşulunun altında birden fazla işlem yapılacaksa, bu işlemleri tek satırda yazmamalıyız. Çünkü bu durumda kod karışıklığı ortaya çıkar ve haliyle kodun okunabilirliği azalır.
Python “Elif”
Eğer “if” ile belirtilen ilk koşul gerçekleşmezse, peşi sıra gerçekleşecek bir veya bir dizi koşuldan birinin test edilmesini “elif” koşulu ile sağlarız. Aşağıdaki örneği inceleyiniz:
x = 10
if x > 15:
print('x, 15’ten büyük')
elif x > 5:
print('x, 5’ten büyük ama 15’ten küçük')
Bu örnekte, x > 15 koşulu yanlış olduğu için, “elif” bloğu içindeki x > 5 koşulu kontrol edilir. Bu koşul doğru olduğu için, ‘x, 5’ten büyük ama 15’ten küçük’ mesajı yazdırılır.
Birden fazla değerlendirmemiz gereken koşullar da olabilir. İşte böylesi durumlarda “elif” çok kullanışlıdır. Aşağıdaki örneği inceleyiniz:
x = 20
if x < 10:
print('x, 10’dan küçük')
elif x < 20:
print('x, 20’den küçük ama 10’dan büyük ya da eşit')
elif x < 30:
print('x, 30’dan küçük ama 20’den büyük ya da eşit')
Eğer x 10’dan küçükse program ilk if
bloğunu çalıştırır. Eğer bu koşul sağlanmazsa ve x 10’dan büyük ya da eşit ama 20’den küçükse program ikinci elif
bloğuna geçer ve bu bloğu çalıştırır. Eğer bu koşul da sağlanmazsa ve x 20’den büyük ya da eşit ama 30’dan küçükse üçüncü elif
bloğu çalışır. Böylece, if-elif
yapısı sayesinde koşullar sırasıyla kontrol edilir ve doğru olan blok çalıştırılır.
Bu arada belirtmek isterim ki, eğer birden fazla doğru koşulu sağlayan “elif” komutu girilmişse koşulu ilk sağlayanın dediği olur ve komut kapanır. Bakınız:
a = 100
b = 100
if b > a:
print("b, a'dan büyüktür")
elif a == b:
print("a, b'ye eşittir") #koşulu sağladığı anda biter.
elif a == b:
print("a, b'ye selam veriyor") #ilk koşul sağlandığı için bu çalışmıyor
elif a >= b:
print("a, b'ye büyük eşittir")
Python “Else”
Hayatın içerisinde bazen karşımıza birden fazla seçenek çıkar ve bizler de bu seçeneklerden birini tercih etmek zorunda kalırız, değil mi? Mesela, dışarı çıkmayı planlıyorsunuz ve hava yağmurlu. Bu durumda ya şemsiye alırsınız, ya da yağmurluğunuzu giyersiniz. Eğer yağmur yağmıyorsa, bu eşyaları almanıza gerek kalmaz. İşte bu tür durumlar için programlama dillerinde else
ifadesi bulunur.
Python’da else
, if
veya elif
koşullarının hiçbiri sağlanmadığında çalıştırılacak kod bloğunu belirtir. Yani, if
ve elif
bloklarındaki koşullar yanlışsa, son çare olarak artık hiçbir koşula bakılmayacağını anlar ve else
bloğundaki kodu çalıştırır.
yas = 20
if yas >= 18:
print("Reşit")
else:
print("Reşit değil")
Bu örnekte, yas
değişkeninin değeri 18 veya daha büyükse, “Reşit” yazdırılır. Eğer yas
değişkeninin değeri 18’den küçükse, if
bloğundaki koşul yanlış olur ve else
bloğundaki “Reşit değil” yazdırılır. Örneğimizde yas
20 olduğu için, if
bloğundaki koşul doğru olur ve “Reşit” yazdırılır.
Özetle, else
ifadesi, belirtilen koşulların hiçbiri sağlanmadığında çalıştırılacak kod bloğunu belirtir ve bu, programın farklı durumlar için farklı kodlar çalıştırmasını sağlar.
Python’da koşullu ifadeler oluştururken kullanılan mantıksal operatörler bulunmaktadır. Sırayla bunları inceleyelim.
Python’da “If – Else” Koşulunun Tek Satırda Yazımı
Python’da “if-else” koşulunun tek satırda yazabiliriz. Bunun için kullanılan syntax aşağıdaki gibidir:
[if_true] if [koşul] else [if_false]
[Koşul doğruysa bunu çalıştır] if [koşul] else [Koşul yanlışsa bunu çalıştır]
x = 10
if x == 10:
message = "x 10'a eşittir"
else:
message = "x 10'a eşit değildir"
print(message)
Bu kod, aslında şu kodun kısaltılmış halidir:
x = 10
message = "x 10'a eşittir" if x == 10 else "x 10'a eşit değildir"
print(message)
Her iki kod parçası da aynı sonucu verir: eğer x
10’a eşitse, ekrana “x 10’a eşittir” yazdırılır. Eğer x
10’a eşit değilse, ekrana “x 10’a eşit değildir” yazdırılır. Kısa hali, kodu daha kompakt ve okunabilir yapar.
Tek satırlık “if-else” koşullarında genellikle “:” veya “;” işareti kullanılmaz. Bunun yerine, doğrudan yukarıda belirttiğim syntaxı kullanabilirsiniz. Ancak, birden fazla işlem yapılacaksa (yani birden fazla satır kod yazılacaksa), bu işlemleri tek satırda yazmak için “:” ve “;” işaretlerini kullanmanız gerekecektir. Örneğin:
x = 10
print("x 10'a eşittir") if x == 10 else print("x 10'a eşit değildir"); print("Kontrol tamamlandı")
Bu örnekte, x
10’a eşit olduğu için “x 10’a eşittir” yazdırılacaktır ve ardından “Kontrol tamamlandı” yazdırılacaktır. ;
işareti, else
bloğunun sona erdiğini ve yeni bir işlemin başladığını belirtir. Bu nedenle, ;
işareti print("x 10'a eşit değildir")
ifadesinin sonunda yer alır ve ardından print("Kontrol tamamlandı")
işlemi başlar. Bu, her iki print
işleminin de tek satırda yapılmasına izin verir.
Pyhon’da “Nested if” Kullanımı
İç içe if
ifadeleri, bir if
ifadesinin içinde başka bir if
ifadesi bulunması durumudur. Özellikle bir dizi koşulu kontrol etmeniz gerektiğinde kullanışlıdır. Yani, bir koşulun sonucuna bağlı olarak, başka bir koşulu kontrol etmek isteyebilirsiniz. Yani bir koşul gerçekleştiği zaman kontrol edilebilecek alt koşullar test etme durumudur. Bu koşulları yazarken “indentation“lara (girinti) dikkat etmek gerekir. Böylece koşulun hangi bloğa ait olduğu kolayca anlaşılabilir.
Bir kişinin yaşını kontrol etmek ve 18 yaşından büyükse başka bir koşulu değerlendirmek, koşullu ifadelerin temel kullanımına güzel bir örnektir. Örneğin, önce kişinin yaşını kontrol edebilir ve eğer bu kişi 18 yaşından büyükse ehliyeti olup olmadığını sorgulayabilirsiniz. Bakınız:
yas = 20
ehliyet = True
if yas >= 18:
if ehliyet:
print("Bu kişi araba kullanabilir")
else:
print("Bu kişi ehliyeti olmadığı için araba kullanamaz")
else:
print("Bu kişi yaşından dolayı araba kullanamaz")
Yukarıdaki örnekte, yas
değişkeni 18 veya daha büyükse ehliyet
değişkeni kontrol edilir. Eğer ehliyet
True
ise bu kişinin araba kullanabileceği sonucuna ulaşılır. Eğer ehliyet
False
ise bu kişinin ehliyeti olmadığı için araba kullanamayacağı sonucuna ulaşılır. Eğer yas
değişkeni 18’den küçükse ehliyet
değişkeni kontrol edilmez ve bu kişinin yaşından dolayı araba kullanamayacağı sonucuna ulaşılır.
Python’da “And” Operatörü
1. Python’da “and” operatörü ile birden fazla koşulun gerçekleşme durumu kontrol edilir. Eğer belirtilen tüm koşullar doğruysa True
döndürür, aksi takdirde False
döndürür. Örneğin:
x = 10
y = 20
if x == 10 and y == 20:
print("Her iki koşul da doğru")
else:
print("Her iki koşul da doğru değil")
Bu örnekte, x
değişkeninin değeri 10’a eşit ve y
değişkeninin değeri 20’ye eşit olduğu için, yani her iki koşul da doğru olduğu için and
operatörü True
döndürür ve “Her iki koşul da doğru” yazdırılır.
2. Eğer koşulardan biri bile yanlışsa tüm koşullar yanlış kabul edilir. Bakınız:
x = 10
y = 30
if x == 10 and y == 20:
print("Her iki koşul da doğru")
else:
print("Her iki koşul da doğru değil")
Yukarıdaki örnekte, x
değişkeninin değeri 10’a eşit ama y
değişkeninin değeri 20’ye eşit değil. Bu yüzden, and
operatörü False
döndürür ve “Her iki koşul da doğru değil” yazdırılır.
3. Eğer tüm koşullar yanlışsa zaten False
döndürür. Örneği inceleyiniz:
x = 5
y = 30
if x == 10 and y == 20:
print("Her iki koşul da doğru")
else:
print("Her iki koşul da doğru değil")
Bu örnekte, x
değişkeninin değeri 10’a eşit değil ve y
değişkeninin değeri 20’ye eşit değil. Yani her ikisi de yanlış. Bu yüzden, and
operatörü False
döndürür ve “Her iki koşul da doğru değil” yazdırılır.
Python’da “Or” Operatörü
1. Python’da or
operatörü, en az bir koşul bile doğruysa True
döndürür, aksi takdirde False
döndürür. Örneğin:
x = 10
y = 20
if x == 10 or y == 20:
print("En az bir koşul doğru")
Yukarıdaki örnekte, x
değişkeninin değeri 10’a eşit ve y
değişkeninin değeri 20’ye eşittir. Yani her ikisi de doğrudur. Haliyle or
operatörü True
döndürür ve “En az bir koşul doğru” yazdırılır.
2. Bir koşulun doğru, diğer koşulun yanlış olduğu durum:
x = 10
y = 30
if x == 10 or y == 20:
print("En az bir koşul doğru")
Bu örnekte, x
değişkeninin değeri 10’a eşit olduğu için, or
operatörü True
döndürür ve “En az bir koşul doğru” yazdırılır. Yani, x == 10
koşulu doğru olduğu için, y == 20
koşulunun doğru olup olmadığı önemli değildir.
3. İki koşulun da yanlış olduğu durum:
x = 5
y = 30
if x == 10 or y == 20:
print("En az bir koşul doğru")
else:
print("Hiçbir koşul doğru değil")
Yukarıdaki örneğimizde, x
değişkeninin değeri 10
‘a eşit değil ve y
değişkeninin değeri de 20
‘ye eşit değil. Haliyle or
operatörü False
döndürür ve “Hiçbir koşul doğru değil” yazdırılır.