Karar yapıları ve karşılaştırma operatörleri
Bilgisayar programlarını güçlü kılan şey, farklı durumlara göre farklı kararlar verebilmeleridir. Örneğin bir oyun karakterinin canı sıfıra indiğinde «Oyun Bitti» ekranı gelmeli, canı varsa oyun devam etmelidir. Bu karar mekanizması koşul bloklarıyla kurulur.
Koşul ifadeleri iki değeri birbiriyle karşılaştırır ve sonuç olarak bir boolean (True veya False) üretir. Python’da karşılaştırma için özel operatörler kullanılır.
| Operatör | Anlamı | Örnek ifade | Sonuç |
|---|---|---|---|
== | Eşit midir? | 5 == 5 | True |
!= | Eşit değil midir (farklı mıdır)? | 5 != 3 | True |
> | Büyük müdür? | 10 > 20 | False |
< | Küçük müdür? | 7 < 12 | True |
>= | Büyük veya eşit midir? | 10 >= 10 | True |
<= | Küçük veya eşit midir? | 4 <= 3 | False |
En kritik kural: Tek eşittir (=) değişkene değer atar; iki değerin eşit olup olmadığını sorgulamak için mutlaka çift eşittir (==) kullanılır.
KısayolUnutmayın: x = 5 değeri kutuya koyar; x == 5 ise «x kutusunun içindeki 5 mi?» diye sorar.
if ve else blokları: Girinti kuralı
Python’da bir koşulun doğru (True) olması durumunda çalışacak kodlar if anahtar kelimesiyle tanımlanır. Koşul satırının sonuna mutlaka iki nokta üst üste (:) konur.
Birçok programlama dilinde kod blokları süslü parantezlerle { } belirtilirken, Python’da bu işi girinti (indentation) yapar. if satırının altındaki kodlar 4 boşluk (veya bir Tab tuşu) içeriden yazılır. Koşul sağlandığında yalnız bu girintili satırlar çalışır.
Koşul sağlanmadığında (False olduğunda) devreye girmesi istenen alternatif yol için else kullanılır. else bloğunun kendi koşulu olmaz; «yukarıdaki hiçbir durum olmadıysa bunu yap» anlamına gelir.
SözdizimiSatır sonuna iki nokta (:) koy ve altına yazacağın kodu 4 boşluk içeri girintile.
Örnek. Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?yas = 15
if yas >= 18:
print("Ehliyet alabilir")
else:
print("Ehliyet alamaz")
- yas değişkeninin değeri 15’tir.
- 15 >= 18 koşulu denetlenir; sonuç False’tur.
- if bloğu atlanır, else bloğu çalıştırılır.
- Ekrana "Ehliyet alamaz" yazdırılır.
CevapEhliyet alamaz
Çoklu koşullar: elif yapısı
Bazen önümüzde ikiden fazla olasılık bulunur (örneğin hava güneşli mi, yağmurlu mu, karlı mı?). Bu tür durumlarda if ile else arasına elif (else if - değilse eğer) blokları yerleştirilir.
Python koşulları yukarıdan aşağıya sırayla test eder. İlk True veren bloğu bulduğu anda o bloğun içindeki kodu çalıştırır ve geri kalan bütün elif ile else bloklarını atlayarak çıkar.
| Puan aralığı | Koşul ifadesi | Harf notu |
|---|---|---|
| 85 ve üzeri | if puan >= 85: | A |
| 70 - 84 arası | elif puan >= 70: | B |
| 50 - 69 arası | elif puan >= 50: | C |
| 50’nin altı | else: | Kaldı |
Koşulların sırası çok önemlidir. Eğer puan >= 50 en başa yazılırsa, 90 alan bir öğrenci için de ilk koşul sağlanacağından alt basamaklara hiç inilemez.
Örnek. Aşağıdaki kod çalıştırıldığında ekrana ne basılır?notu = 75
if notu >= 85:
print("Pekiyi")
elif notu >= 70:
print("İyi")
elif notu >= 50:
print("Geçti")
else:
print("Kaldı")
- İlk koşul: 75 >= 85 → False.
- İkinci koşul: 75 >= 70 → True.
- True bulunduğu için "İyi" yazdırılır.
- Alttaki diğer elif ve else blokları değerlendirilmeden atlanır.
Cevapİyi
Mantıksal operatörler: and, or, not
Tek bir if satırında birden çok şartı birlikte kontrol etmek için mantıksal operatörler kullanılır. Python’da bu operatörler doğrudan İngilizce kelimelerdir: and, or ve not.
| Operatör | Kural | Örnek kod | Sonuç |
|---|---|---|---|
and (ve) | Bağlanan tüm koşullar True ise True, biri bile False ise False | yas > 18 and ehliyet == True | Her iki şart da sağlanmalı |
or (veya) | Koşullardan en az biri True ise True, hepsi False ise False | gun == "Cumartesi" or gun == "Pazar" | Biri sağlansa yeterlidir |
not (değil) | Önüne geldiği koşulun doğruluk değerini tersine çevirir | not (5 > 10) | True (çünkü 5>10 False’tur) |
Kısayoland bağlacı seçicidir (hepsi doğru olmalı); or bağlacı hoşgörülüdür (tek bir doğru yeterlidir).
Örnek. Aşağıdaki kod parçası ne yazdırır?x = 10
y = 5
if x > 5 and y > 10:
print("Durum A")
elif x > 5 or y > 10:
print("Durum B")
else:
print("Durum C")
- x > 5 (10 > 5) True, ancak y > 10 (5 > 10) False. and bağlacı ikisinin de True olmasını ister, ilk if False çıkar.
- elif satırına geçilir: x > 5 True olduğu için or bağlacı genel sonucu True yapar.
- Durum B ekrana yazdırılır.
CevapDurum B
İç içe koşullar ve yaygın hatalar
Bir if bloğunun içine başka bir if bloğu yazılabilir. Buna iç içe koşul (nested if) denir. İçteki bloğun çalışabilmesi için hem dıştaki hem de içteki koşulun doğru olması gerekir.
- SyntaxError (İki nokta unutulması): if, elif veya else satırlarının sonuna
:konulmazsa Python derlenemez. - IndentationError (Girinti hatası): if altındaki kodlar aynı hizada girintilenmelidir. Kimi satır 2 boşluk kimi 4 boşluk olursa hata verir.
- TypeError (Uyumsuz tip karşılaştırması): Bir metin ile bir sayıyı
<veya>ile kıyaslamak (örneğin"18" > 10) Python’da hata üretir.
İç içe çok fazla if yazmak kodun okunmasını zorlaştırır. Mümkün olduğunda iç içe if yerine and operatörü ile tek satırda birleştirmek daha temiz kabul edilir.
Testten önce bunları bil
- Eşitlik sorgusunda daima çift eşittir (==) kullanın
if x = 5 yazmak sözdizimi hatası verir. Doğrusu if x == 5: şeklindedir.
- if, elif ve else sonundaki iki noktayı (:) unutmayın
Satır sonundaki iki nokta Python’a yeni bir girintili bloğun başladığını bildirir.
- elif zincirinde sıra hayati önem taşır
Koşulları en dar ve özel olandan en genel olana doğru sıralayın; ilk True çalışan blok olur.
- Girintileri daima 4 boşlukla ve tutarlı yapın
Bir blok içindeki tüm satırların girinti boşluğu birbirine tam eşit olmalıdır.
- and her iki tarafın da True olmasını şart koşar
and ile bağlanan üç şarttan ikisi doğru biri yanlışsa sonuç False olur.
Kendini dene
Cevaba dokun — neden öyle olduğunu birlikte görelim.
Python’da iki değerin birbirine eşit olup olmadığını denetlemek için hangi operatör kullanılır?
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?sayi = 12
if sayi % 2 == 0:
print("Çift")
else:
print("Tek")
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?puan = 80
if puan > 90:
print("A")
elif puan > 70:
print("B")
elif puan > 50:
print("C")
else:
print("D")
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?a = 5
b = 10
if a > 2 and b < 8:
print("1")
elif a > 2 or b < 8:
print("2")
else:
print("3")
Aşağıdaki kod satırlarından hangisi sözdizimi hatası (SyntaxError) verir?
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?x = False
if not x:
print("Açık")
else:
print("Kapalı")
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?sicaklik = 25
if sicaklik > 30:
print("Sıcak")
print("Tamamlandı")
Python’da bir if veya elif bloğuna ait kodların sınırını belirleyen temel kural nedir?
Aşağıdaki ifadelerden hangisinin doğruluk değeri False’tur?
Aşağıdaki kod parçası çalıştırıldığında ekrana ne yazdırır?yas = 20
uye = True
if yas >= 18:
if uye:
print("Giriş serbest")
else:
print("Üye olunuz")
else:
print("Yaş yetersiz")
Alıştırma bitti — –
Sıradaki konu: Döngüler.
0/10 · soru cevaplandı