Koşullar: if, elif, else (Python Dersi 5)

Geçen derste adını ve notlarını sorup ortalamasını hesaplayan bir program yazdık. Ama program sadece sayıyı söylüyordu; “geçtin” ya da “kaldın” diyemiyordu. Bu derste programımıza karar vermeyi öğretiyoruz. Bunu her gün kendin de yapıyorsun: “yağmur yağıyorsa şemsiye al, yağmıyorsa alma”. Python’da bu cümlenin karşılığı if ve else.

Bu dersin kodları ve alıştırmaları hazır bir not defterinde: Colab’da Aç.

Karşılaştırma: doğru mu, yanlış mı?

Karar verebilmek için önce bir soru sormak gerekiyor: “ortalama 50’den büyük mü?” Python’da bu soruları karşılaştırma işaretleriyle soruyoruz. Cevap her zaman 3. derste gördüğümüz bool tipinde: True (doğru) ya da False (yanlış).

İşaretAnlamıÖrnekSonuç
==eşit mi?5 == 3False
!=eşit değil mi?10 != 7True
>büyük mü?5 > 3True
<küçük mü?5 < 3False
>=büyük ya da eşit mi?7 >= 7True
<=küçük ya da eşit mi?7 <= 6False

Dikkat: eşit mi diye sormak için iki eşittir kullanılır. Tek eşittir (=) 3. derste gördüğümüz gibi bir değişkene değer atamak demek. Metinleri de karşılaştırabilirsin: "elma" == "elma" sonucu True.

if: bir koşul doğruysa

ortalama = 81.7
if ortalama >= 50:
print("Geçtin!")

Bunu Python’a çevirirsek: “Eğer ortalama 50’ye eşit ya da büyükse, Geçtin yaz.” İki şeye dikkat:

  • Koşulun sonunda iki nokta (:) var. Python’a “şimdi bu koşul doğruysa yapılacakları sıralayacağım” der.
  • print satırı içeriden başlıyor. Buna girinti denir ve Python’da süs değil, kuralın kendisi. Koşula ait satırları girintiden anlıyor. Colab iki noktadan sonra Enter’a basınca girintiyi kendisi ekler; genellikle 4 boşluk.

Koşul yanlışsa girintili satırlar hiç çalışmaz ve program bir alttaki girintisiz satırdan devam eder.

else: değilse

ortalama = 42
if ortalama >= 50:
print("Geçtin!")
else:
print("Kaldın.")

else “yukarıdaki koşul doğru değilse” demek. Kendi koşulu yoktur, sadece iki nokta alır. if ile else aynı hizada durmalı.

elif: birden fazla seçenek

Hayat her zaman iki seçenekli değil. Ortalamayı harf notuna çevirmek istediğini düşün:

ortalama = 81.7
if ortalama >= 85:
harf = "A"
elif ortalama >= 70:
harf = "B"
elif ortalama >= 50:
harf = "C"
else:
harf = "F"
print(f"Harf notun: {harf}") # Harf notun: B

elif “else if” kısaltması: “önceki koşul yanlışsa, şuna bak”. Python koşulları yukarıdan aşağı tek tek kontrol eder ve ilk doğru olanı çalıştırıp durur. 81,7 için ilk koşul (85 ve üzeri) yanlış, ikincisi (70 ve üzeri) doğru; Python “B” der ve gerisine hiç bakmaz.

Bu yüzden sıra önemli. Koşulları ters sıraya koyarsan ne olur?

ortalama = 92
if ortalama >= 50: # 92 ≥ 50 doğru, burada durur
harf = "C"
elif ortalama >= 70:
harf = "B"
elif ortalama >= 85:
harf = "A"
print(harf) # C ← 92 alan öğrenci C aldı!

Program hata vermiyor ama yanlış sonuç üretiyor. Aralık kontrol ederken en dar koşuldan (en yüksek not) başla.

and, or, not: koşulları birleştirmek

Bazen bir karar için birden fazla şeye bakarsın. “Hava sıcaksa ve yağmur yağmıyorsa pikniğe gideriz.”

sicaklik = 28
yagmur = False
if sicaklik > 25 and not yagmur:
print("Piknik zamanı!")
  • and (ve): iki koşul da doğruysa doğru.
  • or (veya): koşullardan en az biri doğruysa doğru.
  • not (değil): doğruyu yanlış, yanlışı doğru yapar. not yagmur, “yağmur yok” demek.

Mini program: not değerlendirici

Geçen dersin ortalama hesaplayıcısına karar verme yeteneği ekleyelim:

isim = input("Adın: ")
not1 = float(input("1. sınav: "))
not2 = float(input("2. sınav: "))
not3 = float(input("3. sınav: "))
ortalama = (not1 + not2 + not3) / 3
if ortalama >= 85:
harf = "A"
elif ortalama >= 70:
harf = "B"
elif ortalama >= 50:
harf = "C"
else:
harf = "F"
print(f"{isim}, ortalaman {ortalama:.1f}, harf notun {harf}.")
if harf == "F":
print("Bu dönem olmadı, bütünlemede görüşürüz.")
else:
print("Tebrikler, dersi geçtin!")

Sık karşılaşılan hatalar

Tek eşittir kullanmak. if ortalama = 50: yazarsan Python çok yardımsever bir mesaj verir:

SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

“Yoksa == mi demek istedin?” diye soruyor. Evet, onu demek istedin.

İki noktayı unutmak. if ortalama >= 50 yazıp Enter’a basarsan:

SyntaxError: expected ':'

Girintiyi unutmak. Koşuldan sonraki satırı içeriden başlatmazsan:

IndentationError: expected an indented block after 'if' statement on line 1

Hata mesajı, koşulun hangi satırda olduğunu da söylüyor. Bu üç hatayı ilk haftalarda çok göreceksin; mesajı okumaya alışırsan çözümü genelde mesajın kendisinde bulursun.

Bu derste öğrendiklerin

  • Karşılaştırmalar (==, !=, >, <, >=, <=) True ya da False verir.
  • if koşul doğruysa girintili satırları çalıştırır; else değilse ne yapılacağını söyler.
  • elif ile birden fazla seçenek sıralanır; ilk doğru olan çalışır, o yüzden sıra önemli.
  • and, or ve not ile koşulları birleştirirsin.
  • Python’da girinti kuralın kendisi; koşula ait satırları girintiden anlar.

Alıştırmalar

  1. Kullanıcıdan bir sayı al. Sayı çiftse “Çift”, tekse “Tek” yazdır. İpucu: 3. derste gördüğümüz % (kalan) işlemini kullan.
  2. Kullanıcıdan bir sayı al; pozitif, negatif ya da sıfır olduğunu yazdır.
  3. Bir yılın artık yıl olup olmadığını bul. Kural: 4’e bölünüyorsa artık yıldır; ama 100’e bölünüyorsa değildir; ama 400’e de bölünüyorsa yine artık yıldır. 2024, 2026, 1900 ve 2000 ile dene.
  4. Aşağıdaki kodda 92 alan öğrenci neden “C” alıyor? Düzelt.
ortalama = 92
if ortalama >= 50:
harf = "C"
elif ortalama >= 70:
harf = "B"
else:
harf = "A"
print(harf)

Cevaplar

  1. sayi = int(input("Bir sayı: ")), sonra if sayi % 2 == 0: ise “Çift”, else: ise “Tek”. 2’ye bölümünden kalan 0 olan sayılar çifttir.
  2. if sayi > 0: “pozitif”, elif sayi < 0: “negatif”, else: “sıfır”.
  3. if (yil % 4 == 0 and yil % 100 != 0) or yil % 400 == 0: ise artık yıl. Sonuçlar: 2024 evet, 2026 hayır, 1900 hayır, 2000 evet.
  4. Koşullar yanlış sırada: 92 ≥ 50 ilk koşulda doğru olduğu için Python “C” deyip duruyor. En yüksekten başla: if ortalama >= 85: "A", elif ortalama >= 70: "B", elif ortalama >= 50: "C", else: "F".

Sıradaki ders

Bir sonraki derste döngüleri öğreneceğiz: for ve while ile bir işi defalarca tekrarlamak. Böylece üç not için üç ayrı input satırı yazmak yerine “10 not al” diyebileceğiz.


Hatice Özbolat | Teknoloji ve AI Rehberi sitesinden daha fazla şey keşfedin

Son gönderilerin e-postanıza gönderilmesi için abone olun.

Comments

Bir yanıt yazın