Şu ana kadar, tüm programlarda verdiğimiz tüm yönergeler sırayla ve satır atlanmaksızın uygulanacak nitelikteydi. Klavyenizde geri ve ileri ok tuşlarına veya kod üzerinde geri veya ileri düğmelerine basarak şu örneğe bakalım:
Bu derste kazanacağımız yeni beceri "eğer" ifadelerini (if statement) kullanmak olacak, böylece şarta bağlı olarak gerçekleşecek programlar yazabileceğiz; eğer şart karşılanmış olursa bir sonuç, karşılanmamış olursa diğer sonucu verebilen programlar. Mesela yukarıdaki örneği biraz değiştirip yaşa bağlı olarak bir mesaj verecek bir program yazalım. İki satır ekleyeceğiz: if yaş > 65:
(yani, "eğer yaş 65'ten büyükse") ve print('Emekliliğiniz hayırlı olsun!')
. Şimdi adım adım programı yeniden görelim:
Dikkat ettiyseniz yeni print fonksiyonunu atladı (skipped), çünkü yaş
sadece 31 idi! Eğer aynı programda doğumYılı
değişkenine 1928 değerini verirsek ne olur?
Farkı görüyorsunuz değil mi? Alttaki örnek (yaş
85 olan) 2 satır çıktı verdi ve son satırı atlamadı. Bu, tam olarak "eğer" ifadeleri (if statement) ile yapmayı amaçladığımız şeydir: önce bir veriyi kontrol etsin (
yaş
65'ten büyük mü?), eğer bu veri doğru ise -şartı karşılıyorsa- belirtilen işlemi yapsın (Emekliliğiniz hayırlı olsun!
yazmak).
Sonucu belirleyici olan kısım şart (condition), şartı karşılayıp karşılamadığına baktığımız ifadeler ise gövde (body) olarak adlandırılır. Gövde cümleleri paragraf girintisi ile yazılmalıdır (bkz. yukarıdaki örnek). Gövde birden fazla ifade içerebilir, böyle bir durumda satırlar paragraf girintisi ile yazılmalıdır.
- Bu kodu konsol veya görüntüleyicide 1982 değerini girerek çalıştırın. Girintili satırların ikisini de atlayacak.
Bu alıştırmada sizden boolean karşılaştırma bağlaçları ile bir program yazmanızı isteyeceğiz. Yukarıda "if x > y:
" ifadesinin "eğer x
y
'den büyükse" anlamına geldiğini görmüştük. Ayrıca kullanabileceğiniz diğer işlemler şunlar olabilir:
if x < y:
ifadesi "eğer x, y'den küçük ise" demektirif x >= y:
ifadesi "eğer x, y'den büyük veya y'ye eşit ise" demektirif x <= y:
ifadesi "eğer x, y'den küçük veya y'ye eşit ise" demektir
Bir "eğer ifadesi"nin yapısı
- İlk satır,
if «şart»:
üç parçası vardır: if kelimesi, doğru veya yanlış (True/False) sonucuna varılmasını belirleyecek olan«şart»
(aşağıda açıklayacağız) ve iki nokta üstüste:
- Ve gövde pargraf girintisi ile yazılmış satırlar. Girinti miktarı (boşluk miktarı) önemli olmasa da tutarlı olması çok önemlidir, eğer aynı sayıda boşluk yoksa bu hataya yol açar çünkü Python girintilere bakarak gövdenin nerede başlayıp nerede bittiğini görmek zorundadır.
Eğer ifadesinin gövde böümü bir program bloğudur. Bloklar pek çok başka yerde de kullanılır, mesela kendi fonksiyonlarınızı yazarken veya "için" döngüsü (for loop) kurarken. (Diğer bazı programlama dillerinde bloklar küme parantezleri ile belirlenir
.){}
Şimdiki alıştırma aslında 4 alıştırmadan oluşuyor. Birkaç farklı sonuç almak için satırları düzenlemeniz gerekecek. Bölümleri açmak için yatay çubuklara tılklayın; istediğiniz sırayla seçebilirsiniz. Daha önce gördüğümüz gibi kod satırlarını sürükleyip bırakarak yerlerini değiştirebilirsiniz.
Doğru, Yanlış ve bool
Şimdiye kadar, bir ifadenin «şart»
(«condition») kısmında
yapıldığında, x > y
gibi bir sayısal karşılaştırma x
sayısal olarak y
sayısından büyük olduğu durumlarda ifadenin doğru; x
sayısal olarak y
sayısına eşit veya ondan küçük olduğu durumlarda ise yanlış olduğunu gördük. Daha genel bir anlatımla doğru/yanlış (true/false) değerleri Boolean olarak anılır(bkz. George Boole). Python'da, bool
tipi Boolean değerlerini göstermekte kullanılır; sadece iki değer vardır, True (Doğru)
ve False (Yanlış)
.
Note that in Python'da, bir programda doğrudan True
ve False bool değerlerini kullanacaksanız büyük harfle yazmalısınız
, yoksa örneğinde olduğu gibi hata alırsınız.
Boolean karşılaştırmaları
>
, <
, <=
, ve >=
işaretleri iki sayının karşılaştırılmasında kullanılır ve bize bool değeri verir. Bunlardan başka iki karşılaştırma yolu daha vardır:
x == y eşittir işareti (
equality operator), x ve y eşit olduğunda sonuç:True
x != y
is the eşit değil işareti (not-equal operator), x ve y eşit olmadığında sonuç:True
==
ve!=
stringlerle ve diğer tipten verilerle de kullanılır
(İki tane eşittir işareti koyuyoruz ==
çünkü tek eşittir işaretini başka bir işlevle kullanıyoruz, x = «ifade»
kullanımında eşittir işareti ile x değişkenine bir «ifade» değeri belirliyoruz. Bu iki işareti =
ve ==
işaretleri çok sık birbirine karıştırılır. bunlar hataya yol açar.)
Bu yeni öğrendiğimiz karşılaştırma işaretleri ile bir alıştırma yapalım.
Burada blok (aynı girintili hizada bulunan alt alta satırlar) kullanımını görüyoruz. Bir blokun içinde başka bloklar da kullanılabilir:
if password=='açılSusam': print('Kullanıcı giriş yaptı.') if saat>17: print('İyi akşamlar!') print('Bir komut girin:')Burada dış blokta 4, iç blokta 1 satır bulunuyor:
if password=='openSesame':print('User logged on.')
if hour>17:print('Good evening!')print('Enter a command:')
if
ifadelerisaat>17
yanlış bile olsa (ve iç blok atlanır), dış bloktaki print('Bir komut girin:')
satırı yine de işleme konacaktır.Şimdi, içiçe yuvalanmış bloklar kullanarak biraz daha karışık bir yaş hesaplayıcı yazalım.
Daha sonra, 9. derste, birden çok boolean kontrol işlemlerini else (değilse)
ve elif
(else if, veya eğer) komutlarıyla; "and", "or" ve "not" Boolean işlemcileri ile daha pratik yapmayı öğreneceğiz. Şimdilik biz bir sonraki dersimize devam edelim.