Bu derste öğreneceklerinizle karmaşık durum kontrolü işlemlerini, Python'un iki özelliğini kullanarak çok daha incelikle yapabileceksiniz.
- Bir
if «C»
ifadesinin ardından gelenelse
ifadesi eğerC
false (yanlış) ise işleme konur - Boolean şart yapılarını
A and B
,A or B
, venot A
(ve, veya, değil) bağlaçları ile kullanabilirsiniz
else
Program yazarken genelde bir durumu kontrol ederek, durumun doğru veya yanlışlığına göre, bir işlemin ya da diğerinin yapılmasına karar vermek gerekir. Daha önce, size verdiğimiz bir alıştırmada yaş
0'dan küçükse bir şey, eğer yaş
0'dan küçük değilse başka bir şey yapmanızı istemiştik; kod da şöyle idi:
if yaş >= 0: print('Zaman yolcusu sayılmazsın') if yaş < 0: print('Sen bir zaman yolcususun')Şimdi aynı kodu
else
(değilse) kullanarak tekrar yazalım.
Daha genel olarak, else
yapısını aşağıdaki blok formuyla kullanırız:
if «test»: «doğru-gövde (true-body)» # girintili blok else: «yanlış-gövde (false-body)» # başka bir girintili blokPython testi değerlendirir. Eğer doğru ise true-body, yanlış ise false-body işleme konur.
else
Yapısının Felsefesi
else
bağlacını kullanmakla yeni güçler kazanmıyoruz, ama kodu okumak, hataları ayıklamak ve sürdürmek çok daha kolay oluyor. Aynı işlemi yapan iki farklı kod parçasına bakalım:
A Versiyonu
if boy < 256: print('Bu sürüş için çok kısa') else: print('Hoşgeldiniz!') |
B Versiyonu
if boy < 256: print('Bu sürüş için çok kısa') if boy >= 256: print('Hoşgeldiniz!') |
İkisi de aynı işlemi yapar, hatta B versiyonunda else
bağlacına gerek bile yok. Yine de programcıların çoğu A versiyonunun daha iyi olduğu konusunda hemfikir olacaklardır. Örneğin şartı değiştirsek (diyelim 256 yerine 128 yazsak) A versiyonunda sadece tek bir değişiklik yapmamız gerekir. Ayrıca insan zihni için A versiyonu anında anlaşılır; B'de ise iki ifadenin de doğru olup olmadığını kontrol etmek ve düşünmek gerekir.
Python'un abs(x) şeklinde dahili bir fonksiyonu vardır, x sayısının kesin değerini hesaplamakta kullanılır. Düzenleyici bu alıştırmada bu fonksiyonu kullanmanıza izin vermiyor, ama daha sonra kullanabileceksiniz. |
elif
Python'da kullanığımız bir başka anahtar kelime de elif
, bu bağlaçla bir seferde birkaç şartı aynı anda kontrol edebiliriz. elif
yapısının en temel kullanımı şöyledir:
if «test1»: «body1» # Eğer test1 doğru ise bu gövde işleme konur elif «test2»: «body2» # Eğer test1 yanlış ve test2 doğru ise bu gövde işleme konurTahmin edeceğiniz gibi
elif
"else if" bağlacının kısaltmasıdır, çünkü bu else içine yereştirilmiş bir if yapısı ile aynı şeydir Ama bununla daha az kod yazmış ve daha az girinti katmanı kullanmış oluruz, böylece, okuması, hata ayıklaması ve düzenlemesi daha kolay olur. Üstelik istediğiniz sayıda elif ifadesini aynı yapıya ekleyebilir ve en sona da gerek duyarsanız bir else
ifadesi koyabilirsiniz:
if «test1»: «body1» # test1 doğru ise işleme konur elif «test2»: «body2» # test1 yanlış, test2 doğru ise işleme konur elif «test3»: «body3» # test1 & test2 yanlış ve test3 doğru ise işleme konur else: # bu son iki satır size kalmış «else-body» # eğer yukarıdakilern hepsi yanlışsa bu satır işleme konur
Burada bir döngü içinde kullanılan elif
var. Çalıştırmadan sonucu tahmin edebilir misiniz?
Boolean Operatörleri: and
, or
, not
Boolean ifadelerini "and
", "or
", ve "not
" (ve, veya, değil) bağlaçlarıyla birleştirebilirsiniz.
A and B
birleşik ifadesi, bileşenlerinin ikisi de,A
veB
doğru ise doğrudur, bileşenlerinden bir tanesi yanlışsa yanlıştır. (Örneğin, Eğer yağmur yağıyorsaand
(ve) şemsiyenizini unuttuysanız, ıslanırsınız.)A or B
birleşik ifadesi, bileşenlerinden bir tanesi,A
veyaB
doğru ise doğrudur; ikisi de yanlışsa yanlıştır. (Mesela, Haftasonu iseor
(veya) tatil ise, okul kapalıdır.)not A
ifadesi,A
yanlış olduğu durumda doğrudur, eğerA
doğru ise yanlıştır. (Örneğin,not
yemek ye(me)di ise, karnı açtır.)
Tüm olasılıkları görüntüleyen bir program. Okulda öğrendiğimiz çarpım tablosu gibi, ama bunun adı hakikat tablosu.
Hataları da kontrol ederek sayıları harflere çeviren bir programda and
(ve) kullanımını görelim.
A or B
ifadesine denktir?not (A or B)
is only true when both A
and B
are false. Also, note that (not A) and (not B)
is only true if both not A
and not B
are true, i.e. if both A
and B
are false. So we have the following equality:(not A) and (not B) = not (A or B)Put a
not
around both sides, so we deducenot ((not A) and (not B)) = not (not (A or B))and observe that
not(not X))
always equals X
, sonot ((not A) and (not B)) = not (not (A or B)) = A or BThis way of rewriting a boolean expression is one of De Morgan's laws.
İşlemlerin Sıralaması
Boolean operatörlerinin de tıpkı matematik işlemleri gibi "işlem sıralaması" vardır. Sıralama şöyledir
NAO: not (en yüksek öncelik), and, or (en düşük öncelik)
yani örneğin,
not x or y and z
anlamı (not x) or (y and z)
Dersimizi bu unsurları kullanacağımız bir soruyla bitirelim.
A or not B and Cdeğeri nedir; if (A, B, C) = (False, True, True)? İpucu
A or ((not B) and C)substituting the values, we have
False or ((not True) and True)and now simplifying one step at a time gives
False or ((not True) and True)
= False or (False and True)
= False or False
= False