Python'da if, elif ve else koşullu ifadelerini kod örnekleri ve karar akış şemasıyla anlatan eğitim görseli.

Python’da Koşullu İfadeler: if, elif ve else ile Karar Veren Programlar

Python'da if, elif ve else nasıl kullanılır? Koşullu ifadeleri, girintileme kurallarını, mantıksal koşulları ve karar veren programları örneklerle öğrenin.

PYTHON EĞİTİM SERİSİ · DERS 03 / 16

Tüm Python dersleri  ·  ← Önceki: Operatörler ve Karşılaştırmalar

Bir uygulamanın kullanıcıya yaşını sorduğunu düşünelim.

Kullanıcı 18 yaşında veya daha büyükse bir işlem yapılacak, değilse farklı bir mesaj gösterilecek.

Ya da bir öğrencinin sınav puanına göre başarılı olup olmadığını belirleyen bir program hazırlamak istediğimizi varsayalım.

Böyle bir programın yalnızca sayıları toplaması veya karşılaştırması yeterli değildir.

Karşılaştırmanın sonucuna göre ne yapacağına karar vermesi gerekir.

İşte Python’da if, elif ve else yapıları tam olarak bu işe yarar.

Bu yapılar sayesinde programımız belirli koşullar gerçekleştiğinde farklı kodları çalıştırabilir.

Örneğin hava sıcaklığı yüksekse “Bugün hava sıcak” mesajını, düşükse “Bugün hava serin” mesajını gösterebiliriz.

Bir ürün stokta varsa satın alma işleminin devam edebileceğini, stokta yoksa ürünün tükendiğini belirtebiliriz.

Bütün bunların temelinde koşullu ifadeler bulunur.

Bu derste if, elif ve else kullanımını, girintilemenin neden önemli olduğunu, birden fazla koşulun nasıl değerlendirildiğini ve sık karşılaşılan hataları örneklerle öğreneceğiz.

Dersin sonunda ise bir önceki derste hazırladığımız çalışma hedefi programını geliştirerek kullanıcının çalışma durumuna göre farklı mesajlar gösteren bir uygulama oluşturacağız.

Python Eğitim Serisi — Ders 03 / 16

Bu derse başlamadan önce Ders 02 — Operatörler ve Karşılaştırmalar konusunu tamamlamış olmanız yararlı olacaktır.

Bütün eğitim sırasına Python Eğitim Merkezi üzerinden ulaşabilirsiniz.

Python’da koşullu ifade nedir?

Önceki dersimizde Python’da karşılaştırma yapmayı öğrenmiştik.

Örneğin:

yas = 20

print(yas >= 18)

Bu kodun çıktısı:

True

olur.

Çünkü 20 >= 18 karşılaştırması doğrudur.

Ancak programımız şu anda yalnızca bir karşılaştırma sonucunu ekrana yazdırıyor.

Bizim istediğimiz, bu sonuca göre kullanıcıya anlamlı bir mesaj göstermek.

Örneğin yaş 18 veya üzerindeyse “Yaş koşulunu sağlıyorsunuz” yazsın.

Bunu if kullanarak gerçekleştirebiliriz.

yas = 20

if yas >= 18:
    print("Yaş koşulunu sağlıyorsunuz.")

Çıktı:

Yaş koşulunu sağlıyorsunuz.

Buradaki if kelimesi Türkçede “eğer” anlamına gelir.

Programımızın mantığı şöyledir:

Eğer yas >= 18 koşulu doğruysa altındaki kodu çalıştır.

Koşul yanlışsa bu kodu çalıştırma.

Şimdi yas değişkeninin değerini 15 yapalım.

yas = 15

if yas >= 18:
    print("Yaş koşulunu sağlıyorsunuz.")

Bu kez ekranda herhangi bir mesaj görünmeyecektir.

Çünkü yaş koşulu sağlanmıyor.

Python, if bloğundaki print() satırını atlar.

Programda bu örneğin dışında çalıştırılacak kod bulunmadığından işlem sona erer.

Bu davranış koşullu ifadelerin temelini oluşturur.

if yapısının yazım kuralları

Bir if ifadesinin genel yapısı şöyledir:

if kosul:
    yapilacak_islem

Burada üç önemli bölüm bulunur.

if anahtar kelimesi: Python’a bir koşul kontrol edileceğini bildirir.

Koşul: Sonucu doğru veya yanlış olarak değerlendirilebilen ifadedir.

Girintili kod bloğu: Koşul doğru olduğunda çalıştırılacak komutları içerir.

if satırının sonunda yer alan : işaretine özellikle dikkat etmeliyiz.

Bu iki nokta işareti, bir kod bloğunun başlayacağını belirtir.

Ardından gelen satırlar ise içeri doğru girintilenir.

Python’da girintileme yalnızca kodu güzel göstermek için kullanılmaz; programın yapısını belirler.

Bu konuya birazdan ayrıntılı olarak değineceğiz.

if ve else ile iki farklı durum nasıl yönetilir?

Bir önceki örneğimizde koşul sağlanmadığında herhangi bir mesaj görünmüyordu.

Ancak çoğu zaman koşul yanlış olduğunda da bir işlem gerçekleştirmek isteriz.

Örneğin:

  • Yaş uygunsa “Giriş yapabilirsiniz.”
  • Yaş uygun değilse “Yaş koşulu sağlanmadı.”

İkinci durum için else kullanabiliriz.

yas = 16

if yas >= 18:
    print("Giriş yapabilirsiniz.")
else:
    print("Yaş koşulu sağlanmadı.")

Çıktı:

Yaş koşulu sağlanmadı.

Çünkü 16 >= 18 koşulu yanlıştır.

Python önce if satırındaki koşulu kontrol eder.

Koşul doğruysa if bloğunu çalıştırır.

Yanlışsa else bloğuna geçer.

Aynı programda yas değişkenini 22 yaparsak:

Giriş yapabilirsiniz.

mesajını görürüz.

Önemli bir ayrıntı: else için ayrıca koşul yazmayız.

Çünkü else, kendisinden önceki koşulun sağlanmadığı durumda çalışacak bölümü temsil eder.

Örneğin şu kullanım yanlıştır:

# Hatalı örnek
yas = 16

if yas >= 18:
    print("Giriş yapabilirsiniz.")
else yas < 18:
    print("Yaş koşulu sağlanmadı.")

else satırının yanına koşul yazılmaz.

Doğru kullanım:

yas = 16

if yas >= 18:
    print("Giriş yapabilirsiniz.")
else:
    print("Yaş koşulu sağlanmadı.")

şeklindedir.

Python’da else kullanmak zorunlu değildir.

Yalnızca bir koşul gerçekleştiğinde işlem yapmamız gerekiyorsa tek başına if yeterlidir.

Ancak iki farklı durumu yönetmek istediğimizde if ve else birlikte oldukça kullanışlıdır.

Python’da elif ne işe yarar?

Şimdi biraz daha gerçekçi bir örnek düşünelim.

Bir sınavda öğrencilerin aldıkları puanlara göre farklı değerlendirmeler yapacağız.

Örneğin:

Puan aralığıDeğerlendirme
85–100Çok iyi
70–84İyi
50–69Geliştirilmeli
0–49Başarısız

Burada yalnızca iki durum bulunmuyor.

Dört farklı değerlendirme yapmamız gerekiyor.

Bu gibi durumlarda elif kullanabiliriz.

elif, İngilizcedeki “else if” ifadesinin kısaltmasıdır. Türkçede “değilse, eğer…” şeklinde düşünülebilir.

Örneğimizin Python kodunu hazırlayalım.

puan = 78

if puan >= 85:
    print("Çok iyi")
elif puan >= 70:
    print("İyi")
elif puan >= 50:
    print("Geliştirilmeli")
else:
    print("Başarısız")

Çıktı:

İyi

Programın çalışma mantığını inceleyelim.

Öncelikle Python şu koşulu değerlendirir:

puan >= 85

78, 85’ten küçük olduğu için sonuç False olur.

Python bir sonraki koşula geçer:

puan >= 70

Bu karşılaştırma doğrudur.

Dolayısıyla:

print("İyi")

satırı çalıştırılır.

Ardından aynı if–elif–else zincirinin kalan bölümleri atlanır.

Buradaki önemli kural şudur:

Bir if–elif–else zincirinde ilk doğru koşulun kod bloğu çalışır. Diğer dallara geçilmez.

Örneğin puan 95 olduğunda yalnızca “Çok iyi” mesajı gösterilir.

Puan 40 olduğunda ise hiçbir if veya elif koşulu doğru olmayacağı için else bölümü çalışır.

Python’un resmî koşullu ifadeler rehberi de elif kullanımını örneklerle açıklamaktadır.

Python'da if, elif ve else koşullu ifadelerinin çalışma sırasını, karar akışını ve sınav puanı örneğini gösteren eğitim infografiği.
Python’da if, elif ve else yapılarıyla koşulların değerlendirilmesi ve ilk doğru koşulun çalıştırılması.

Koşulları hangi sırayla yazmalıyız?

Önceki örneğimizde yüksek puandan düşük puana doğru ilerledik.

Bunun önemli bir nedeni var.

Şöyle bir kod yazdığımızı düşünelim:

puan = 95

if puan >= 50:
    print("Geliştirilmeli")
elif puan >= 70:
    print("İyi")
elif puan >= 85:
    print("Çok iyi")

Bu kod beklediğimiz sonucu vermez.

Çünkü 95 puan alan bir öğrenci aynı zamanda 50 puan sınırını da karşılar.

İlk koşul doğru olduğu için Python doğrudan “Geliştirilmeli” mesajını gösterir.

Sonraki koşullara bakmaz.

Dolayısıyla yalnızca karşılaştırma işaretlerinin doğru olması yeterli değildir.

Koşulların sırası da programın sonucunu etkiler.

Sınır değerleriyle çalışan programlarda bu konuya özellikle dikkat etmeliyiz.

Örneğin 50, 70 ve 85 puanlarını ayrı ayrı deneyerek kodumuzun doğru değerlendirme yapıp yapmadığını kontrol edebiliriz.

Kullanıcının girdiği puanı kontrol etmek

Şimdi puanı doğrudan kodun içine yazmak yerine kullanıcıdan alalım.

puan = int(input("Sınav puanınız: "))

if puan < 0 or puan > 100:
    print("Puan 0 ile 100 arasında olmalıdır.")
elif puan >= 85:
    print("Çok iyi")
elif puan >= 70:
    print("İyi")
elif puan >= 50:
    print("Geliştirilmeli")
else:
    print("Başarısız")

Bu kez programın başına bir kontrol ekledik.

puan < 0 or puan > 100

Bu ifade, puanın geçerli aralık dışında olup olmadığını kontrol eder.

Kullanıcı 120 girerse program:

Puan 0 ile 100 arasında olmalıdır.

mesajını gösterir.

Kullanıcı 90 girerse:

Çok iyi

sonucunu görür.

Burada Ders 02’de öğrendiğimiz or operatörünü kullandık.

Böylece önceki derslerimizde öğrendiğimiz bilgilerin birbirini tamamlamaya başladığını görebiliriz.

Ancak küçük bir ayrıntıya dikkat edelim: int() fonksiyonu, geçerli bir tam sayı yerine harf veya uygun olmayan bir metin girildiğinde hata verebilir.

Bu program sayısal sınırları kontrol ediyor; henüz geçersiz metin girişlerini yakalamıyor.

Bunu ileride Python’da hata yönetimini öğrendiğimizde çözeceğiz.

Python’da girintileme neden bu kadar önemli?

Python öğrenirken dikkat etmemiz gereken konulardan biri girintilemedir.

Birçok programlama dilinde kod blokları süslü parantezlerle belirlenir.

Python’da ise girintileme kodun yapısının bir parçasıdır.

Şu örneği inceleyelim:

yas = 24

if yas >= 18:
    print("Yaş koşulu sağlandı.")
    print("İşleme devam edebilirsiniz.")

print("Program sona erdi.")

Çıktı:

Yaş koşulu sağlandı.
İşleme devam edebilirsiniz.
Program sona erdi.

Burada ilk iki print() satırı girintili olduğu için if bloğuna aittir.

Son satır ise girintisizdir.

Dolayısıyla koşuldan bağımsız olarak çalışır.

Şimdi yaş değerini 15 yapalım.

Bu kez yalnızca:

Program sona erdi.

mesajını görürüz.

Çünkü if bloğu atlanır, ancak bloğun dışındaki satır yine çalıştırılır.

Bu örnek bize çok önemli bir kuralı gösteriyor:

Bir satırın girintisi, hangi koşulun içinde bulunduğunu belirler.

Python’da genel olarak dört boşlukla girintileme önerilir.

Visual Studio Code gibi kod editörleri bu işlemi genellikle otomatik olarak gerçekleştirir.

Örneğin if yas >= 18: yazıp Enter tuşuna bastığımızda editör çoğu zaman yeni satırı uygun girintiyle başlatır.

Yanlış girintileme ise hataya neden olabilir.

# Hatalı örnek
yas = 20

if yas >= 18:
print("Giriş yapılabilir.")

Bu kod çalıştırıldığında IndentationError oluşur.

Çünkü if satırından sonra çalıştırılacak kod bloğu girintili yazılmamıştır.

Doğrusu:

yas = 20

if yas >= 18:
    print("Giriş yapılabilir.")

şeklindedir.

Kod yazarken bazı satırlarda Tab, bazılarında farklı sayıda boşluk kullanılması da sorun oluşturabilir.

Bu nedenle aynı dosyada tutarlı bir girintileme düzeni kullanmak gerekir.

Girintileme sorunlarında önce kod bloklarının başladığı satırları, iki nokta işaretlerini ve içeriye alınmış satırları kontrol edebiliriz.

Birden fazla koşul nasıl kontrol edilir?

Gerçek hayatta bir işlem çoğu zaman tek koşula bağlı değildir.

Örneğin bir etkinliğe katılabilmek için kişinin hem gerekli yaşta olması hem de kayıt yaptırmış olması gerektiğini düşünelim.

Ders 02’de öğrendiğimiz and operatörünü burada kullanabiliriz.

yas = 22
kayit_var = True

if yas >= 18 and kayit_var:
    print("Etkinliğe katılabilirsiniz.")
else:
    print("Katılım koşulları sağlanmadı.")

Çıktı:

Etkinliğe katılabilirsiniz.

Çünkü iki koşul da doğrudur.

Ancak kayit_var değişkeninin değerini False yaparsak:

Katılım koşulları sağlanmadı.

mesajını görürüz.

and operatörüyle birleştirdiğimiz koşulların hepsinin doğru olması gerekir.

Peki koşullardan yalnızca birinin yeterli olduğu bir durum varsa?

O zaman or kullanabiliriz.

Örneğin bir indirimden yararlanmak için kişinin öğrenci veya üye olması gerektiğini düşünelim.

ogrenci = False
uye = True

if ogrenci or uye:
    print("İndirim uygulanabilir.")
else:
    print("İndirim koşulları sağlanmadı.")

Çıktı:

İndirim uygulanabilir.

olur.

Çünkü koşullardan biri doğrudur.

not operatörünü de koşullu ifadelerde kullanabiliriz.

bakim_modu = False

if not bakim_modu:
    print("Sistem kullanıma açık.")
else:
    print("Sistem bakımda.")

Çıktı:

Sistem kullanıma açık.

Bu örnekte not, mantıksal değeri tersine çevirir.

Birden fazla koşulu birleştirirken okunabilirliği artırmak için parantez de kullanabiliriz.

yas = 25
kayit_var = True

if (yas >= 18) and (kayit_var == True):
    print("Başvuru koşulları sağlandı.")

Bu kod çalışır.

Ancak Python’da bir değişken zaten True veya False değeri taşıyorsa ayrıca == True yazmamız gerekmez.

Bu nedenle aşağıdaki kullanım daha sadedir:

yas = 25
kayit_var = True

if yas >= 18 and kayit_var:
    print("Başvuru koşulları sağlandı.")

Koşullu ifadelerde amaç yalnızca kodun çalışması değildir.

Kodun neyi kontrol ettiğinin kolay anlaşılması da önemlidir.

Sayının belirli bir aralıkta olması

Bir başka sık ihtiyaç, sayının belirli sınırlar içinde bulunup bulunmadığını kontrol etmektir.

Örneğin bir puanın 0 ile 100 arasında olması gerektiğini düşünelim.

puan = 75

if puan >= 0 and puan <= 100:
    print("Geçerli puan.")
else:
    print("Geçersiz puan.")

Python’da aynı karşılaştırmayı daha kısa yazmak da mümkündür:

puan = 75

if 0 <= puan <= 100:
    print("Geçerli puan.")
else:
    print("Geçersiz puan.")

Bu kullanıma zincirleme karşılaştırma denir.

Özellikle bir değerin belirli bir aralıkta olup olmadığını kontrol ederken okunabilir bir yöntemdir.

Python’un doğruluk değerleri ve karşılaştırmalar hakkındaki resmî belgesi bu davranışı ayrıntılı olarak açıklar.

İç içe if kullanımı

Bazen bir koşul sağlandığında onun içinde ikinci bir koşulu da kontrol etmek isteriz.

Örneğin bir kullanıcının önce yaş koşulunu sağlaması, ardından kayıt durumunun kontrol edilmesi gerektiğini düşünelim.

yas = 21
kayit_var = True

if yas >= 18:
    print("Yaş koşulu sağlandı.")

    if kayit_var:
        print("Kayıt bulundu.")
    else:
        print("Kayıt bulunamadı.")
else:
    print("Yaş koşulu sağlanmadı.")

Çıktı:

Yaş koşulu sağlandı.
Kayıt bulundu.

olacaktır.

Burada ikinci if, birinci if bloğunun içinde bulunur.

Dolayısıyla Python önce yaş koşulunu kontrol eder.

Yaş koşulu sağlanıyorsa kayıt durumuna bakar.

Sağlanmıyorsa içteki kayıt kontrolüne hiç girmez.

Bu yapıya iç içe koşullu ifade denir.

Girintileme burada daha da önem kazanır.

İçteki if, dıştaki if bloğundan bir seviye daha içeridedir.

Peki her durumda iç içe if kullanmalı mıyız?

Hayır.

Bazı durumlarda birden fazla koşulu and ile birleştirmek daha sade bir çözüm olabilir.

Örneğin yalnızca iki koşulun birlikte sağlanıp sağlanmadığını bilmek istiyorsak:

if yas >= 18 and kayit_var:
    print("Başvuru koşulları sağlandı.")

yeterli olabilir.

Ancak yaş ve kayıt durumları için ayrı mesajlar göstermek istediğimizde iç içe yapı daha açıklayıcı olabilir.

Burada önemli olan en kısa kodu yazmak değil, programın mantığını açık biçimde ifade etmektir.

if ile elif arasındaki fark

Koşullu ifadeleri öğrenirken üzerinde durmamız gereken başka bir ayrıntı da bağımsız if ifadeleriyle elif zincirinin farklı davranmasıdır.

Şu kodu inceleyelim:

puan = 90

if puan >= 50:
    print("Temel başarı sınırı geçildi.")

if puan >= 70:
    print("İyi seviyeye ulaşıldı.")

if puan >= 85:
    print("Çok iyi seviyeye ulaşıldı.")

Çıktı:

Temel başarı sınırı geçildi.
İyi seviyeye ulaşıldı.
Çok iyi seviyeye ulaşıldı.

olacaktır.

Çünkü burada üç bağımsız if ifadesi bulunmaktadır.

Python her bir koşulu ayrı ayrı değerlendirir.

Üçü de doğru olduğundan üç mesaj da gösterilir.

Ancak elif zinciri kullansaydık:

puan = 90

if puan >= 85:
    print("Çok iyi")
elif puan >= 70:
    print("İyi")
elif puan >= 50:
    print("Geliştirilmeli")

yalnızca:

Çok iyi

mesajını görürdük.

Çünkü ilk doğru koşul çalıştırıldıktan sonra zincirin kalan bölümleri atlanır.

Bu iki kullanım farklı amaçlar içindir.

Bağımsız olarak birden fazla kontrol yapmak istiyorsak ayrı if ifadeleri kullanabiliriz.

Birden fazla seçenek arasından yalnızca birini çalıştırmak istiyorsak if–elif–else zinciri daha uygundur.

Bu ayrımı anlamak, özellikle ileride daha fazla koşula sahip programlar hazırlarken çok işimize yarayacak.

True ve False dışında hangi değerler koşul olabilir?

Şimdiye kadar genellikle sonucu True veya False olan karşılaştırmalar kullandık.

Ancak Python’da bir if koşulunun içine doğrudan başka değerler de yazılabilir.

Python bu değerleri doğruluk açısından değerlendirir.

Örneğin:

isim = "Deniz"

if isim:
    print("İsim bilgisi girilmiş.")
else:
    print("İsim bilgisi boş.")

Çıktı:

İsim bilgisi girilmiş.

olacaktır.

Çünkü boş olmayan bir metin doğruluk kontrolünde doğru kabul edilir.

Şimdi metni boş bırakalım:

isim = ""

if isim:
    print("İsim bilgisi girilmiş.")
else:
    print("İsim bilgisi boş.")

Bu kez:

İsim bilgisi boş.

mesajını görürüz.

Benzer biçimde sayısal sıfır değeri, False ve None da koşullarda yanlış kabul edilen yaygın değerler arasındadır.

Buna karşılık sıfırdan farklı sayılar genellikle doğru kabul edilir.

Burada yeni başlayanların dikkat etmesi gereken bir ayrıntı bulunur.

Şu örneği inceleyelim:

cevap = "False"

if cevap:
    print("Koşul doğru kabul edildi.")

Çıktı:

Koşul doğru kabul edildi.

olur.

Çünkü "False" tırnak içinde yazılmış bir metindir.

Gerçek False mantıksal değeri değildir.

Aynı nedenle "0" metni de boş olmadığı için doğru kabul edilir.

Bu konu özellikle kullanıcıdan alınan bilgileri kontrol ederken önemlidir.

Örneğin input() ile alınan "False" metnini doğrudan mantıksal False gibi değerlendirmemeliyiz.

Python’un doğruluk değeri kurallarını resmî belgelerinde inceleyebilirsiniz.

Uygulama: Günlük çalışma asistanımızı geliştirelim

Artık öğrendiğimiz koşullu ifadeleri gerçek bir uygulamada kullanabiliriz.

Önceki dersimizde günlük çalışma hedefi hesaplayıcısı hazırlamıştık.

Kullanıcıdan çalışma hedefini, çalışılan süreyi ve oturum sayısını alıyorduk.

Program bunları karşılaştırıyor ve sonuçları True veya False şeklinde gösteriyordu.

Ancak kullanıcıya uygun bir yönlendirme yapmıyordu.

Örneğin hedefini aştığında yalnızca bir mantıksal sonuç gösteriliyordu.

Şimdi bu programı geliştireceğiz.

Yeni sürümde uygulamamız:

  • Kullanıcıdan adını ve çalışma bilgilerini alacak.
  • Negatif süre veya geçersiz hedef girilip girilmediğini kontrol edecek.
  • Çalışma oturumu bilgilerinde tutarsızlık varsa uyaracak.
  • Henüz çalışmaya başlanmadıysa bilgilendirecek.
  • Hedefe kalan süreyi söyleyecek.
  • Hedef tamamlandığında kullanıcıya uygun mesaj gösterecek.
  • Hedef aşıldığında kaç dakika geçildiğini hesaplayacak.
  • Hedefini tamamlayan ve birden fazla oturum yapan kullanıcıya ek bir başarı mesajı gösterecek.

Bütün bunları yalnızca şimdiye kadar öğrendiğimiz değişkenler, operatörler, input(), print() ve koşullu ifadelerle gerçekleştireceğiz.

Yeni dosyamızın adı:

calisma_asistani.py

Kodlarımızı yazalım:

print("=== GÜNLÜK ÇALIŞMA ASİSTANI ===")

ad = input("Adınız: ")

hedef = int(input("Günlük hedefiniz kaç dakika? "))
calisilan = int(input("Kaç dakika çalıştınız? "))
oturum = int(input("Kaç çalışma oturumu yaptınız? "))

print()
print("=== ÇALIŞMA RAPORU ===")

if hedef <= 0 or calisilan < 0 or oturum < 0:
    print("Geçersiz bilgi girdiniz.")
    print("Hedef pozitif, diğer değerler negatif olmayan sayılar olmalıdır.")

elif (calisilan > 0 and oturum == 0) or (calisilan == 0 and oturum > 0):
    print("Çalışma süresi ile oturum sayısı uyumsuz.")
    print("Lütfen bilgilerinizi kontrol edin.")

elif calisilan == 0:
    print(ad, "bugün henüz çalışmaya başlamadın.")
    print("Hedefin:", hedef, "dakika")

elif calisilan < hedef:
    kalan = hedef - calisilan

    print(ad, "hedefine ulaşmak için",
          kalan, "dakika daha çalışmalısın.")

elif calisilan == hedef:
    print("Tebrikler", ad)
    print("Günlük çalışma hedefini tam tamamladın.")

else:
    fazla = calisilan - hedef

    print("Harika", ad)
    print("Hedefini", fazla, "dakika aştın.")

if hedef > 0 and calisilan >= hedef and oturum >= 2:
    print("Ek başarı: Birden fazla oturumla hedefini tamamladın!")

İlk bakışta kod biraz uzun görünebilir.

Ancak büyük bölümü tanıdık.

İlk satırlarda kullanıcıdan bilgi alıyoruz.

Ardından birden fazla koşulu değerlendiriyoruz.

Şimdi programı farklı bilgilerle deneyelim.

İlk deneme: Hedefe henüz ulaşılmadı

Şu bilgileri girelim:

Adınız: Deniz
Günlük hedefiniz kaç dakika? 60
Kaç dakika çalıştınız? 45
Kaç çalışma oturumu yaptınız? 2

Beklenen çıktı:

=== ÇALIŞMA RAPORU ===
Deniz hedefine ulaşmak için 15 dakika daha çalışmalısın.

Çünkü çalışılan süre 45 dakika, hedef ise 60 dakikadır.

Python şu koşula ulaşır:

elif calisilan < hedef:

Bu koşul doğru olduğundan hedefe kalan süre hesaplanır.

kalan = hedef - calisilan

Sonra sonuç ekrana yazdırılır.

İkinci deneme: Hedef tamamlandı

Aynı programda çalışılan süreyi 60 dakika yapalım.

Bu kez şu koşul gerçekleşir:

elif calisilan == hedef:

Programımız:

=== ÇALIŞMA RAPORU ===
Tebrikler Deniz
Günlük çalışma hedefini tam tamamladın.
Ek başarı: Birden fazla oturumla hedefini tamamladın!

sonucunu üretir.

Burada dikkat ederseniz ek başarı mesajı da gösterildi.

Çünkü kullanıcı iki oturum gerçekleştirdi ve çalışma hedefini tamamladı.

Programın sonundaki bağımsız if ifadesi de doğru oldu.

Bu bize birden fazla bağımsız kontrolün aynı programda kullanılabileceğini gösterir.

Üçüncü deneme: Hedef aşıldı

Şimdi çalışma süresini 75 dakika yapalım.

Adınız: Deniz
Günlük hedefiniz kaç dakika? 60
Kaç dakika çalıştınız? 75
Kaç çalışma oturumu yaptınız? 2

Beklenen çıktı:

=== ÇALIŞMA RAPORU ===
Harika Deniz
Hedefini 15 dakika aştın.
Ek başarı: Birden fazla oturumla hedefini tamamladın!

Çünkü programımızda önceki koşulların hiçbiri uygun değildir.

Bu nedenle else bloğu çalışır.

Ardından bağımsız ek başarı kontrolü değerlendirilir.

Dördüncü deneme: Hatalı bilgi

Günlük hedefin -20 dakika olduğunu düşünelim.

Negatif bir çalışma hedefi anlamlı değildir.

Programımızın ilk koşulu bu durumu kontrol eder:

if hedef <= 0 or calisilan < 0 or oturum < 0:

Bu koşul doğru olduğunda:

=== ÇALIŞMA RAPORU ===
Geçersiz bilgi girdiniz.
Hedef pozitif, diğer değerler negatif olmayan sayılar olmalıdır.

mesajı gösterilir.

Böylece programımız yalnızca sonuç hesaplamakla kalmıyor, belirlediğimiz temel kurallara uygun olmayan verileri de kontrol edebiliyor.

Ancak önemli bir sınırımız hâlâ var.

Kullanıcı sayı yerine harf girerse int() dönüşümü sırasında hata oluşabilir.

Ayrıca uygulamamız hatalı girişten sonra kullanıcıya aynı soruyu tekrar sormuyor.

Bu özellikleri ileride döngüleri ve hata yönetimini öğrendiğimizde ekleyebiliriz.

İşte uygulama geliştirme süreci genellikle böyle ilerler.

Önce temel çalışan sürümü hazırlarız.

Sonra yeni öğrendiğimiz konularla programı daha güvenilir ve kullanışlı hâle getiririz.

Koşullu ifadelerde sık yapılan hatalar

Python’da koşullu ifadeler yazarken bazı hatalar yeni başlayanların sık karşısına çıkar.

Bunlardan ilki, if ve elif satırlarının sonunda iki nokta işaretinin unutulmasıdır.

Örneğin:

# Hatalı kullanım
yas = 20

if yas >= 18
    print("Uygun")

Bu kod sözdizimi hatasına neden olur.

Doğru kullanım:

yas = 20

if yas >= 18:
    print("Uygun")

şeklindedir.

İkinci önemli hata girintileme yapılmamasıdır.

if, elif veya else bloğuna ait kodlar uygun biçimde içeri alınmalıdır.

Bir başka hata ise değer atama ile karşılaştırmanın karıştırılmasıdır.

# Hatalı kullanım
if puan = 70:
    print("Geçti")

Burada karşılaştırma için tek eşittir kullanılmıştır.

Doğrusu:

if puan == 70:
    print("Puan tam olarak 70.")

olmalıdır.

Ayrıca bazı kullanıcılar elif yerine else if yazabilir.

Python’da bu amaçla kullanılan anahtar kelime eliftir.

Koşul sırasını yanlış belirlemek de beklenmeyen sonuçlara neden olabilir.

Özellikle puan, fiyat veya yaş aralıklarında en geniş koşulu en başa yazmak, sonraki koşulların hiç çalışmamasına neden olabilir.

Bunların dışında input() ile alınan bilgilerin metin olduğunu unutmamalıyız.

Örneğin:

yas = input("Yaşınız: ")

if yas >= 18:
    print("Uygun")

bu hâliyle hatalıdır.

Çünkü yas metindir ve 18 tam sayıdır.

Doğru yaklaşım, tam sayı beklediğimiz bu örnekte uygun dönüşüm yapmaktır:

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

if yas >= 18:
    print("Uygun")

Elbette kullanıcı geçersiz bilgi girerse dönüşüm yine hata verebilir.

Şimdilik bu ayrımı bilmemiz yeterli.

Kendinizi deneyin: Küçük alıştırmalar

Dersin bu noktasında öğrendiklerimizi kendi kodlarımızla pekiştirebiliriz.

Örnekleri önce kendiniz hazırlamanız, ardından farklı değerlerle denemeniz yararlı olacaktır.

Alıştırma: Sayı pozitif mi, negatif mi?

Kullanıcıdan bir tam sayı alın.

Sayı sıfırdan büyükse “Pozitif”, küçükse “Negatif”, sıfıra eşitse “Sıfır” yazdırın.

Bu uygulama için if, elif ve else kullanabilirsiniz.

Alıştırma: Çift ve tek sayı kontrolü

Kullanıcıdan bir tam sayı alın.

Ders 02’de öğrendiğimiz % operatörünü kullanarak sayının ikiye bölümünden kalanı hesaplayın.

Kalan sıfırsa “Çift sayı”, değilse “Tek sayı” mesajını gösterin.

Alıştırma: Ücretsiz kargo hesabı

Bir alışveriş tutarını kullanıcıdan alın.

Tutar 500 TL veya üzerindeyse “Ücretsiz kargo” mesajını gösterin.

500 TL’nin altındaysa “Kargo ücreti uygulanacak” mesajını yazdırın.

Negatif tutarlar için ayrıca bir uyarı eklemeyi deneyin.

Alıştırma: Çalışma asistanını geliştirin

Hazırladığımız uygulamaya bir özellik daha ekleyin.

Kullanıcı hedefinin en az iki katı kadar çalışmışsa:

“Bugün hedefinin iki katına ulaştın!”

mesajı gösterilsin.

Bunun için * ve >= operatörlerini kullanabilirsiniz.

Bu mesajın yalnızca geçerli çalışma bilgileri girildiğinde gösterilmesine dikkat edin.

Alıştırmaları bitirdikten sonra programları farklı sayılarla tekrar çalıştırın.

Özellikle sınır değerlere dikkat edin.

Örneğin 18 yaş sınırı bulunan bir programda 17, 18 ve 19 değerlerini ayrı ayrı test etmek önemlidir.

Çünkü koşullu ifadelerde hatalar çoğu zaman sınır değerlerde ortaya çıkar.

Kısaca

Python’da koşullu ifadeler, programımızın belirli durumlara göre farklı işlemler gerçekleştirmesini sağlar.

if, bir koşulun doğru olup olmadığını kontrol eder.

else, koşulun sağlanmadığı durumda çalışacak kod bölümünü tanımlar.

elif ise birden fazla seçenek arasından uygun olanı belirlememize yardımcı olur.

Koşullu ifadelerde iki nokta işareti ve girintileme önemli kurallardır.

Ayrıca önceki derste öğrendiğimiz karşılaştırma ve mantıksal operatörleri koşulların içinde kullanabiliriz.

Örneğin >=, <=, == ve != gibi işaretlerle karşılaştırmalar yapabiliriz.

and, or ve not ile birden fazla mantıksal durumu değerlendirebiliriz.

Bir if–elif–else zincirinde ilk doğru koşulun kod bloğu çalışır.

Bağımsız if ifadeleri ise ayrı ayrı değerlendirilir.

Bu ayrımı anlamak programın doğru davranması açısından önemlidir.

Dersin sonunda hazırladığımız günlük çalışma asistanında bütün bu bilgileri kullandık.

Artık programımız kullanıcıdan bilgi alıyor, temel kontroller yapıyor ve sonuca uygun mesajlar gösteriyor.

Ancak şimdilik her çalıştırmada yalnızca bir kez bilgi alıyoruz.

Bir işlemi tekrar tekrar yaptırmayı veya kullanıcıya yeniden soru sormayı henüz öğrenmedik.

Bir sonraki dersimizde Python’da döngüleri (for ve while) öğreneceğiz.

Böylece tekrarlanan işlemleri her defasında yeniden yazmak zorunda kalmayacağız.

Aynı zamanda çalışma asistanımızı geliştirerek kullanıcıdan gelen bilgileri gerektiğinde tekrar soran programlar hazırlayabileceğiz.

Programlama öğrenirken önemli olan yalnızca kodun doğru çalışması değil, hangi koşulda neden o şekilde davrandığını anlayabilmektir.

PratikTekno Bülteni

Yeni rehberleri kaçırmayın

Yeni teknoloji rehberleri ve pratik çözümler e-postanıza gelsin.