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ış).
| İşaret | Anlamı | Örnek | Sonuç |
|---|---|---|---|
== | eşit mi? | 5 == 3 | False |
!= | eşit değil mi? | 10 != 7 | True |
> | büyük mü? | 5 > 3 | True |
< | küçük mü? | 5 < 3 | False |
>= | büyük ya da eşit mi? | 7 >= 7 | True |
<= | küçük ya da eşit mi? | 7 <= 6 | False |
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.7if 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. printsatı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 = 42if 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.7if 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 = 92if 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 = 28yagmur = Falseif 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) / 3if 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 (
==,!=,>,<,>=,<=)Trueya daFalseverir. ifkoşul doğruysa girintili satırları çalıştırır;elsedeğilse ne yapılacağını söyler.elifile birden fazla seçenek sıralanır; ilk doğru olan çalışır, o yüzden sıra önemli.and,orvenotile koşulları birleştirirsin.- Python’da girinti kuralın kendisi; koşula ait satırları girintiden anlar.
Alıştırmalar
- Kullanıcıdan bir sayı al. Sayı çiftse “Çift”, tekse “Tek” yazdır. İpucu: 3. derste gördüğümüz
%(kalan) işlemini kullan. - Kullanıcıdan bir sayı al; pozitif, negatif ya da sıfır olduğunu yazdır.
- 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.
- Aşağıdaki kodda 92 alan öğrenci neden “C” alıyor? Düzelt.
ortalama = 92if ortalama >= 50: harf = "C"elif ortalama >= 70: harf = "B"else: harf = "A"print(harf)
Cevaplar
sayi = int(input("Bir sayı: ")), sonraif sayi % 2 == 0:ise “Çift”,else:ise “Tek”. 2’ye bölümünden kalan 0 olan sayılar çifttir.if sayi > 0:“pozitif”,elif sayi < 0:“negatif”,else:“sıfır”.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.- 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.

Bir yanıt yazın