Programınızın her zaman değil, bazı şartlar gerçekleştiğinde işletmesini istediğiniz komutlar olur sık sık. Bu amaçla if yapısını kullanırız.
In [2]:
sayi = 15
tahmin = input("Tahmin: ")
if sayi == tahmin:
print "Doğru!"
Bu kod parçasını çalıştırıp 15'den farklı bir sayı verdiğinizde herhangi bir mesaj çıkmayacak, ama 15 verdiğinizde Doğru! yazacak.
Dikkat edilecek noktalar:
if kelimesinin ardından bir şart (sayi eşittir tahmin) gelmeli.==) kullanırız. Tek eşit (=) değişken ataması demektir.:) koymak gerek.Blok kaydırmasını (indentation) bazı editörler (IPython Notebook gibi) otomatik olarak yapar. Aksi takdirde kendiniz yapmalısınız. Kaydırma miktarı önemli değil, bir boşluk bile olur, ama aynı blok içinde tutarlı olmalı. Okunaklıklık için programcılar genel olarak Tab tuşuyla dört boşlukluk kaydırmayı benimsemiştir.
Doğru kaydırma yapılmazsa blok yapısı bozulur ve program yanlış çalışır. Sözgelişi:
In [ ]:
sayi = 15
tahmin = input("Tahmin: ")
if sayi == tahmin:
print "Doğru!"
print "Bravo!"
Bu program sadece yapılan tahmin doğruysa Bravo! yazar. Buna karşılık:
In [ ]:
sayi = 15
tahmin = input("Tahmin: ")
if sayi == tahmin:
print "Doğru!"
print "Bravo!"
Bu program tahmin doğru olsa da olmasa da Bravo! yazar, çünkü
ikinci print komutu ilk kaydırma seviyesinden başlatıldığı için, if blokunun dışında kaldı.
Yanlış tahminde bulunduğumuzda da programımızın bir tepki vermesini istiyorsak, if ile beraber else kullanırız.
In [4]:
sayi = 15
tahmin = input("Tahmin: ")
if sayi == tahmin:
print "Doğru!"
else:
print "Yanlış!"
Dikkat edilecek noktalar:
if ve else kelimeleri aynı komutun parçasıdırlar. Aynı hizada olmalıdırlar.else'den sonra bir şart gelmez. else bloku yukarıdaki şartın yanlış olduğu durumda çalışır sadece.if tek başına kullanılabilir, ama else kullanılamaz. Her else'in bir if'e bağlı olması gerekir.Şimdi if komutunun en genel haline bakacağız. elseden sonra tekrar bir if kullanmamızın gerektiği durumları elif ifadesiyle sadeleştirebiliriz. Diyelim, öğrencilerin sayısal notlarını alıp harf notları veren bir program yazıyoruz. Ölçeğimiz şöyle olsun:
In [7]:
n = input("Notu girin: ")
if n < 0 or n > 100:
print "Geçersiz not"
elif n <= 50:
print "F"
elif n <= 65:
print "D"
elif n <= 80:
print "C"
elif n<=90:
print "B"
else:
print "A"
Aynı programı sadece if ve else kullanarak da yazabiliriz, ama ardarda kaydırmalar yüzünden daha zor anlaşılır.
In [ ]:
n = input("Notu girin: ")
if n < 0 or n > 100:
print "Geçersiz not"
else:
if n <= 50:
print "F"
else:
if n <= 65:
print "D"
else:
if n <= 80:
print "C"
else:
if n<=90:
print "B"
else:
print "A"
Birçok kez bir değişkene belli bir şartın doğruluğuna veya yanlışlığına göre bir değer atamamız gerekir. Mesela:
In [10]:
a = 3
if a < 5:
x = "falan"
else:
x = "filan"
print x
Bunu daha kısa yoldan üçlü if ifadesi ile sağlarız:
In [9]:
x = "falan" if a < 5 else "filan"
print x
Daha somut olarak, bir sayının mutlak değerini almak için:
In [11]:
x = -3
x = -x if x<0 else x
print x
Üçlü if ifadesi bir değer geri verdiği için, if-else blokunun dil kuralları gereği kullanılamadığı yerlerde kullanılabilir, kod yazma esnekliği sağlar.
Bu üçlü yapıda elif yoktur ama içiçe kararlar verilebilir. Sözgelişi, hava sıcaklığı 15C altındaysa "soğuk", 15C-25C arasındaysa "ılık", 25C üstündeyse "sıcak" veren bir ifade yazalım.
In [16]:
s = input("Sıcaklık: ")
mesaj = "hava soğuk" if s < 15 else "hava ılık" if s < 25 else "hava sıcak"
print mesaj
In [ ]: