Python’da Koşul İfadeleri (“if” – “elif” – “else” Yapıları)
Bu dersmizde, Python’da sıklıkla kullandığımız önemli bir konsept olan koşul ifadelerini 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şamımızda karşılaştığımız problemleri çözerken, belirli koşullar altında kararlar alırız. Aynı şekilde, bir program yazarken de belirli koşullar altında kararlar almak zorundayız. Python’daki koşul ifadeleri, bu kararları almayı ve bir programın farklı yollarla dallanmasını sağlar.
Bir program, belirli bir görevi yerine getirmek için bir bilgisayara verilen talimatlardan oluşur. Her görev, belirli kararlar almayı gerektirir ve bu nedenle koşul ifadeleri, programlama dünyasının ayrılmaz bir parçasını oluşturur.
Python‘da koşul ifadeleri oluştururken matematiksel koşullar için genel olarak aşağıdaki tablodaki işaretlerden yararlanılır. Bakınız:
İşaret | Açıklama | Örnek |
---|---|---|
== | eşittir | a == b (a eşittir b) |
!= | eşit değildir | a != b (a eşit değildir b) |
< | küçüktür | a < b (a küçüktür b) |
<= | küçük ya da eşittir | a <= b (a küçük ya da eşittir b) |
> | büyüktür | a > b (a büyüktür b) |
>= | büyük ya da eşittir | a >= b (a büyük ya da eşittir b) |
Bu işaretler yardımıyla oluşturulan koşullar, True
(Doğru) ya da False
(Yanlış) değerler üretir. Bu değerler, belirli koşullar altında belirli kod bloklarının çalıştırılmasını sağlar.
Python’da koşul ifadelerini oluşturabilmek için “if“, “elif” (else if kısaltması) ve “else” anahtar kelimelerinden yararlanırız. Pek çok programla dilinde olduğu gibi Python’da da “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, “if” bloğu içindeki kod çalıştırılır. Eğer koşul yanlışsa, “elif” ve “else” blokları kontrol edilmeye başlanır.
Sıra kendisine gelen “elif” bloğu, önceki “if” koşulu yanlışsa kontrol edilir. Eğer “elif” koşulu doğruysa, “elif” bloğu içindeki kod çalıştırılır. Eğer “elif” koşulu da yanlışsa, sırasını “else” bloğuna savar. Yani “else” bloğu, önceki tüm koşullar yanlışsa çalıştırılan kod bloğudur.
Ayrıca belirtmek isterim ki, yazım sıralaması çok önemlidir. Python’da koşul ifadeleri belirli bir sıra takip eder:
if
: Her zaman en başta gelir. Birif
bloğu, belirli bir koşulun doğru olup olmadığını kontrol eder.elif
(else if’in kısaltması):if
koşulu yanlışsa, bir sonrakielif
koşulu kontrol edilir. Birif
bloğundan sonra birden fazlaelif
bloğu olabilir.else
: Eğerif
ve tümelif
koşulları yanlışsa,else
bloğu çalıştırılır.else
bloğu her zaman en sonda gelir ve birif
bloğundan sonra en fazla birelse
bloğu olabilir.
❗ Bir “if” bloğundan sonra, istenildiği kadar “elif” bloğu olabilir ve en sonunda sadece bir “else” bloğu olabilir. Ayrıca “else” bloğu opsiyoneldir yani olmayabilir de, ama eğer varsa, her zaman en sonda olmalıdır. Özetle:
- Bir koşul olacaksa ilk olarak
if
bloğu ile yazılır. Sadece bir tane olur ve o da her zaman en başta yazılır. elif
bloklarıif
bloğundan sonra gelir ve koşul sayısı kadar yazılabilir.else
bloğu, eğer varsa, her zaman en sonda ve sadece bir tane olmalıdır.
❗ Belirtmek isterim ki, “elif” ve “else” blokları, tek başlarına bir koşulu başlatamazlar. Çalışmaları için, öncelikli olarak koşulu karşılamamış bir “if” bloğu olmalıdır.
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.
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')
- Yukarıdaki örneği özetlersek:
- Eğer
x
10’dan küçükse, ilkif
bloğu çalıştırılır. - Eğer
x
10’dan büyük ya da eşit ama 20’den küçükse, ikincielif
bloğu çalıştırılır. - Eğer
x
20’den büyük ya da eşit ama 30’dan küçükse, üçüncüelif
bloğu çalıştırılır.
- Eğer
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")
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.
“İç içe if” Kullanımı (Nested if)
İç içe if
ifadeleri, bir if
ifadesinin içinde başka bir if
ifadesi bulunması durumudur. Bu, 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.
Bir koşul gerçekleştiği zaman kontrol edilebilecek alt koşullar test edilebilir. Bu koşulları yazarken indentation yani girintilere dikkat etmek gerekir. Böylece koşulun hangi bloğa ait olduğu kolayca anlaşılabilir.
Örneğin, bir kişinin yaşını kontrol etmek isteyebilirsiniz ve eğer bu kişi 18 yaşından büyükse, başka bir koşulu kontrol etmek isteyebilirsiniz, örneğin bu kişinin ehliyeti olup olmadığını. 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")
Bu ö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ü
❶ 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.
❷ 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.
❸ 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ü
❶ 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.
❷ 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.
❸ İ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 örnekte ise, 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.