Bir cümlelik özet
Koşullar, bir programın “eğer şu doğruysa şunu yap, değilse başka bir şey yap” diyerek karar vermesini sağlayan yapılardır.
Neden önemli?
Şimdiye kadar yazdığımız programlar hep yukarıdan aşağıya, tek bir yolda ilerledi. Ama gerçek programlar sürekli karar verir. Bir oyun, canın bittiğinde “Oyun bitti” yazar. Bir sınav uygulaması, puanına göre farklı bir mesaj gösterir. Bir robot, önündeki engel yakınsa durur.
Scratch modülünde “eğer / değilse” bloklarını kullanmıştık. Python’da da aynı fikir var; sadece bloklar yerine kelimeler ve girinti kullanıyoruz. Bu dersin sonunda programın, gelen veriye göre farklı davranmasını sağlayabileceksin.
if / else ve girintiyle blok
Python’da bir karar if (eğer) kelimesiyle başlar. if kelimesinden sonra bir koşul yazarız; koşul doğruysa (True) altındaki satırlar çalışır.
Basit bir örnek:
yas = 15
if yas >= 13:
print("Bu içeriği görebilirsin.")
Burada dikkat edilecek iki şey var:
- Koşuldan sonra iki nokta (
:) koyulur. - Bir sonraki satır 4 boşluk içeriden başlar. Bu içeri girmeye girinti (indentation) denir. Girinti, o satırların
ifbloğuna ait olduğunu gösterir.
Girinti Python’da süs değildir; blokların sınırını girinti belirler. İçeri girmiş satırlar koşulun içindedir; hizaya geri dönen satırlar koşulun dışındadır.
Koşul yanlışsa (False) başka bir şey yapmak istersek else (değilse) ekleriz:
yas = 10
if yas >= 13:
print("Bu içeriği görebilirsin.")
else:
print("Bu içerik için biraz daha büyümen gerekiyor.")
Bu programda yalnızca bir mesaj yazılır: koşul doğruysa ilki, değilse ikincisi.
Karşılaştırma operatörleri
Bir koşul çoğu zaman iki değeri karşılaştırır. Bunun için karşılaştırma operatörlerini kullanırız. Her biri True ya da False üretir.
| Operatör | Anlamı | Örnek | Sonuç |
|---|---|---|---|
== | eşit mi | 5 == 5 | True |
!= | eşit değil mi | 5 != 3 | True |
< | küçük mü | 3 < 5 | True |
> | büyük mü | 3 > 5 | False |
<= | küçük ya da eşit mi | 5 <= 5 | True |
>= | büyük ya da eşit mi | 4 >= 5 | False |
Buradaki en sık karışan nokta şudur: tek = bir değeri atamak için kullanılır, çift == ise iki değeri karşılaştırmak için.
yas = 12 # atama: yas değişkenine 12 koy
print(yas == 12) # karşılaştırma: yas 12'ye eşit mi? -> True
print(yas != 10) # True
print(yas < 18) # True
print(yas >= 13) # False
Örnek: Çift mi tek mi?
Bir sayının çift olup olmadığını % (mod, kalan) operatörüyle anlarız. % bölme işleminden kalanı verir. Bir sayı 2’ye tam bölünüyorsa (kalan 0 ise) çifttir.
sayi = int(input("Bir sayı gir: "))
if sayi % 2 == 0:
print("Çift sayı")
else:
print("Tek sayı")
Örneğin 8 girersen 8 % 2 sonucu 0’dır, koşul doğrudur ve “Çift sayı” yazılır. 7 girersen 7 % 2 sonucu 1’dir, koşul yanlıştır ve else çalışır.
elif ile birden çok yol
Bazen iki değil, üç veya daha fazla yol vardır. elif (else if / “değilse eğer”) ile birden çok koşulu sırayla kontrol edebiliriz.
Python koşulları yukarıdan aşağıya dener. İlk doğru olan koşulun bloğu çalışır, geri kalanlara bakılmaz.
Örnek: Sınav puanını değerlendirme.
puan = int(input("Sınav puanını gir: "))
if puan >= 90:
print("Pekiyi")
elif puan >= 70:
print("İyi")
else:
print("Geliştirebileceğin bir alan var")
Burada sıra önemlidir. 95 girersen ilk koşul (>= 90) doğrudur ve “Pekiyi” yazılır. 75 girersen ilk koşul yanlış, elif puan >= 70 doğrudur ve “İyi” yazılır. 40 girersen hiçbiri doğru olmadığı için else çalışır.
Koşulları yüksekten alçağa doğru sıraladığımıza dikkat et. elif puan >= 70 satırını en üste koysaydık, 95 gibi yüksek puanlar da “İyi” olurdu; çünkü 95 zaten 70’ten büyüktür ve ilk doğru koşulda durulur.
Mantıksal operatörler: and / or / not
Bazen bir karar tek bir koşula değil, birkaç koşula birden bağlıdır. Bunları birleştirmek için mantıksal operatörleri kullanırız.
and(ve): İki koşul da doğruysa sonuçTrue.or(veya): En az bir koşul doğruysa sonuçTrue.not(değil): Doğruyu yanlışa, yanlışı doğruya çevirir.
yas = 15
izin_var = True
if yas >= 13 and izin_var:
print("Etkinliğe katılabilirsin.")
if not izin_var:
print("Önce izin alman gerekiyor.")
İlk koşul, hem yaşın 13 veya üstü olmasını hem de iznin olmasını ister; ikisi de doğru olmalı. or ise seçenek sunar:
hava = "yağmurlu"
if hava == "yağmurlu" or hava == "karlı":
print("Yanına bir şemsiye al.")
Burada hava “yağmurlu” veya “karlı” ise mesaj yazılır; ikisinden biri yeterlidir.
Mini uygulama
Bir sinema bileti fiyatını yaşa göre belirleyen program yaz. Kurallar:
- Yaş 12’den küçükse: “Çocuk bileti” yaz.
- Yaş 65 veya üstündeyse: “65+ bileti” yaz.
- Diğer tüm durumlarda: “Tam bilet” yaz.
Şablon:
yas = int(input("Yaşını gir: "))
if yas < 12:
print("Çocuk bileti")
elif yas >= 65:
print("65+ bileti")
else:
print("Tam bilet")
Programı çalıştır ve 8, 40, 70 gibi farklı değerlerle dene. Sonra sen bir kural daha ekle: yaş tam 12 ise ne olmalı? Kodun bu durumda ne yazdığını kontrol et ve mantığı istediğin gibi düzelt.
Uygulama laboratuvarı: Koşullar
Koşullar konusunu kalıcı hâle getirmenin en iyi yolu, kavramı küçük ve ölçülebilir bir göreve dönüştürmektir. Bu çalışmada if / else ve girintiyle blok ile Örnek: Çift mi tek mi? arasındaki ilişkiyi kullanarak çalışan kısa bir Python 3 programı, örnek girdiler ve beklenen çıktılar hazırlayacaksın. Amaç yalnız sonucun çalışması değil; hangi kararı neden verdiğini, neyi test ettiğini ve hangi durumda tasarımı değiştireceğini açıklayabilmektir.
Görev senaryosu
Şu senaryoyu ele al: belirli aralıktaki sayıyı tahmin ettiren küçük oyun. Dersin ana hedefi “if / elif / else ve mantıksal operatörlerle Python’da karar vermeyi öğren” olduğuna göre önce problemi tek cümleyle tanımla. Ardından sistemin alacağı girdiyi, uygulayacağı işlemi ve üreteceği çıktıyı ayrı ayrı yaz. Bilmediğin bir ayrıntı varsa onu varsayım olarak işaretle; varsayımı gerçek bilgi gibi kullanma.
- Planla: Başlangıç durumunu, beklenen sonucu ve kullanacağın kavramları yaz.
- En küçük sürümü kur: Yalnız temel davranışı çalıştır; süsleme ve ek özellikleri sonraya bırak.
- Üç test hazırla: Normal bir durum, sınırda bir durum ve hatalı ya da beklenmeyen bir durum seç.
- Sonucu kaydet: Beklenen ile gerçekleşeni yan yana yaz; fark varsa olası nedeni belirt.
- Tek değişiklik yap: Aynı anda birçok şeyi değiştirmek yerine bir kararı düzeltip testi yeniden çalıştır.
Başarı ölçütleri
- Kod Python 3 sözdizimiyle çalışıyor mu?
- Değişken ve fonksiyon adları amacı açıklıyor mu?
- Boş, yanlış türde ve sınırdaki girdiler denendi mi?
- Hata mesajı kullanıcıya neyi düzeltmesi gerektiğini söylüyor mu?
- Aynı kod gereksiz tekrar olmadan yeniden kullanılabiliyor mu?
“Koşullar” çalışmasını bitirdiğinde ürünü bir arkadaşına yalnız bölüm başlıklarıyla anlat. Arkadaşın belirli aralıktaki sayıyı tahmin ettiren küçük oyun senaryosundaki adımları ve karar nedenlerini takip edebiliyorsa anlatım yeterince açıktır. Anlaşılmayan noktayı daha fazla terim ekleyerek değil, if / else ve girintiyle blok ve Örnek: Çift mi tek mi? ilişkisini daha küçük adımlara bölerek düzelt.
Sık yapılan hatalar
Karşılaştırırken = kullanmak
Yanlış: if yas = 12: Bu bir hata verir; çünkü tek = atamadır. Doğrusu if yas == 12: şeklindedir.
İki noktayı unutmak
if puan >= 90 satırının sonuna : koymazsan Python SyntaxError verir. if, elif, else satırlarının hepsi iki nokta ile biter.
Girintiyi karıştırmak
Blok içindeki satırlar aynı miktarda içeride olmalı. Bir satırı 4, diğerini 3 boşluk içeri yazarsan IndentationError alırsın. Her zaman 4 boşluk kullan ve tutarlı ol.
elif sırasını yanlış kurmak
Koşulları yanlış sırada yazarsan yüksek bir puan bile alt basamağa düşebilir. Genellikle en dar veya en yüksek koşulu en üste koymak gerekir.
Güvenlik notu
Kod öğrenirken yalnızca kendi yazdığın veya güvendiğin kaynaklardan gelen kodu çalıştır. İnternette bulduğun tanımadığın kodları anlamadan çalıştırma. Ayrıca programların input ile isteyeceği bilgilerde gerçek adres, şifre gibi kişisel verilerini yazma; alıştırmalarda sayılar ve takma değerler yeterlidir.
Ders özeti
ifbir koşul kurar; koşulTrueise altındaki girintili blok çalışır.elsekoşul yanlış olduğunda çalışır;elifise birden fazla yolu sırayla kontrol eder.- Karşılaştırma operatörleri (
==,!=,<,>,<=,>=)TrueveyaFalseüretir. - Girinti Python’da bloğun sınırını belirler; 4 boşluk kullan ve tutarlı ol.
and,or,notile birden çok koşulu birleştirebilir ve daha akıllı kararlar kurabilirsin.
Kontrol soruları
ifbloğunun altındaki satırların çalışması için koşulun hangi değeri üretmesi gerekir?=ile==arasındaki fark nedir?puan = 75iken aşağıdaki kod ne yazar?
if puan >= 90:
print("Pekiyi")
elif puan >= 70:
print("İyi")
else:
print("Geliştirebileceğin bir alan var")
sayi % 2 == 0koşulu neyi kontrol eder?yas >= 13 and izin_varifadesininTrueolması için hangi koşullar sağlanmalıdır?
Cevaplar
- Koşulun
True(doğru) değerini üretmesi gerekir. KoşulFalseise blok atlanır. - Tek
=bir değeri değişkene atamak için, çift==iki değerin eşit olup olmadığını karşılaştırmak için kullanılır. - “İyi” yazar. İlk koşul (
75 >= 90) yanlıştır, ikinci koşul (75 >= 70) doğrudur ve orada durulur. - Sayının 2’ye bölümünden kalanın 0 olup olmadığını, yani sayının çift olup olmadığını kontrol eder.
- Hem
yasdeğeri 13 veya daha büyük olmalı hem deizin_varTrueolmalıdır.andile iki koşul da sağlanmalıdır.
Kaynak ve doğrulama notu
“Koşullar” dersi için doğrulama odağı if / else ve girintiyle blok ile Örnek: Çift mi tek mi? arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Kod örnekleri Python 3 sözdizimi esas alınarak hazırlanmıştır. Çalıştırma ortamına göre küçük farklar görülebileceği için örnekler önce güvenli bir çevrim içi editörde veya yerel geliştirme ortamında denenmelidir.
Sonraki ders
For ve While Döngüleri: Aynı adımları elle tekrar tekrar yazmadan, programa bir işi kaç kez yapacağını söylemeyi öğreneceğiz.