Hoşgeldin Ziyaretçi



Konuyu Oyla:
  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Koşullu Durumlar
#1
Artık Python programlama dilinde belli bir noktaya geldik sayılır. Ama eğer farkettiyseniz, yine de elimizi kolumuzu bağlayan, istediğimiz şeyleri yapmamıza engel olan bir şeyler var. İşte bu bölümde, Python programlama dilinde hareket alanımızı bir hayli genişletecek araçları tanıyacağız.
Aslında sadece bu bölümde değil, bu bölümü takip eden her bölümde, hareket alanımızı kısıtlayan duvarları tek tek yıktığımıza şahit olacaksınız. Özellikle bu bölümde inceleyeceğimiz ‘koşullu durumlar’ konusu, tabir yerindeyse, Python’da boyut atlamamızı sağlayacak.
O halde hiç vakit kaybetmeden yola koyulalım...
Şimdiye kadar öğrendiğimiz Python bilgilerini kullanarak şöyle bir program yazabileceğimizi biliyorsunuz:
yaş = 15

print("""Programa hoşgeldiniz!

Programımızı kullanabilmek için en az
13 yaşında olmalısınız.""")

print("Yaşınız: ", yaş)

Burada yaptığımız şey çok basit. Öncelikle, değeri 15 olan, yaş adlı bir değişken tanımladık. Daha sonra, programımızı çalıştıran kullanıcılar için bir hoşgeldin mesajı hazırladık. Son olarak da yaş değişkeninin değerini ekrana yazdırdık.
Bu programın özelliği tek sesli bir uygulama olmasıdır. Yani bu programda kullanıcıyla herhangi bir etkileşim yok. Burada bütün değerleri/değişkenleri programcı olarak kendimiz belirliyoruz. Bu programın ne kadar yavan olduğunu herhalde söylemeye gerek yok.
Ancak yine önceki derslerde öğrendiğimiz
Kod:
input()
fonksiyonu yardımıyla yukarıdaki programın üzerindeki yavanlığı bir nebze de olsa atabilir, bu programı rahatlıkla çok sesli bir hale getirebilir, yani kullanıcıyla etkileşim içine girebiliriz.
Yukarıdaki tek sesli uygulamayı,
Kod:
input()
fonksiyonunu kullanarak çok sesli bir hale nasıl getireceğimizi gayet iyi bildiğinize eminim:
print("""Programa hoşgeldiniz!

Programımızı kullanabilmek için en az
13 yaşında olmalısınız.""")

print("Lütfen yaşınızı girin.\n")

yaş = input("Yaşınız: \t")

print("Yaşınız: ", yaş)

Tıpkı bir önceki uygulamada olduğu gibi, burada da yaptığımız şey çok basit. İlk örnekte yaş değişkeninin değerini kendimiz elle yazmıştık. İkinci örnekte ise bu yaş değişkenini kullanıcıdan alıyoruz ve tıpkı ilk örnekte olduğu gibi, bu değişkenin değerini ekrana yazdırıyoruz.
Bu arada, yukarıdaki uygulamada yer verdiğimiz \n ve \t adlı kaçış dizileri de artık sizin için oldukça tanıdık. \n kaçış dizisi yardımıyla bir alt satıra geçtiğimizi, \t adlı kaçış dizisi yardımıyla da bir sekmelik boşluk bıraktığımızı biliyorsunuz.
Gördüğünüz gibi, şu ana kadar öğrendiklerimizle ancak kullanıcıdan gelen yaş bilgisini ekrana yazdırabiliyoruz. Öğrendiğimiz
Kod:
input()
fonksiyonu bize kullanıcıdan bilgi alma imkanı sağlıyor. Ama kullanıcıdan gelen bu bilgiyi şimdilik ancak olduğu gibi kullanabiliyoruz. Yani mesela yukarıdaki örneği dikkate alarak konuşacak olursak, kullanıcının yaşı eğer 13’ün üzerindeyse onu programa kabul edecek, yok eğer 13 yaşın altındaysa da programdan atacak bir mekanizma üretemiyoruz. Yapabildiğimiz tek şey, kullanıcının girdiği veriyi ekrana yazdırmak.
Yukarıda verdiğimiz örneklerle nereye varmaya çalıştığımızı az çok tahmin etmişsinizdir. Dikkat ederseniz yukarıda sözünü ettiğimiz şey koşullu bir durum. Yani aslında yapmak istediğimiz şey, kullanıcının yaşını denetleyip, onun programa kabul edilmesini 13 yaşından büyük olma koşuluna bağlamak.
İsterseniz tam olarak neden bahsettiğimizi anlayabilmek için, birkaç vaka örneği verelim.
Diyelim ki Google’ın Gmail hizmeti aracılığıyla bir e.posta hesabı aldınız. Bu hesaba gireceğiniz zaman Gmail size bir kullanıcı adı ve parola sorar. Siz de kendinize ait kullanıcı adını ve parolayı sayfadaki kutucuklara yazarsınız. Eğer yazdığınız kullanıcı adı ve parola doğruysa hesabınıza erişebilirsiniz. Ama eğer kullanıcı adınız ve parolanız doğru değilse hesabınıza erişemezsiniz. Yani e.posta hesabınıza erişmeniz, kullanıcı adı ve parolayı doğru girme koşuluna bağlıdır.
Ya da şu vaka örneğini düşünelim: Diyelim ki Pardus’ta komut satırı aracılığıyla güncelleme işlemi yapacaksınız.
Kod:
sudo pisi up
komutunu verdiğiniz zaman güncellemelerin listesi size bildirilecek, bu güncellemeleri yapmak isteyip istemediğiniz sorulacaktır. Eğer evet cevabı verirseniz güncelleme işlemi başlar. Ama eğer hayır cevabı verirseniz güncelleme işlemi başlamaz. Yani güncelleme işleminin başlaması kullanıcının evet cevabı vermesi koşuluna bağlıdır.
İşte bu bölümde biz bu tür koşullu durumlardan söz edeceğiz.
Koşul Deyimleri
Hiç kuşkusuz, koşula bağlı durumlar Python’daki en önemli konulardan biridir. Giriş bölümünde bahsettiğimiz koşullu işlemleri yapabilmek için ‘koşul deyimleri’ adı verilen birtakım araçlardan yararlanacağız. Gelin şimdi bu araçların neler olduğunu görelim.
if
Python programlama dilinde koşullu durumları belirtmek için üç adet deyimden yararlanıyoruz:
  • ifelifelse
İsterseniz önce
Kod:
if
deyimi ile başlayalım...
Eğer daha önceden herhangi bir programlama dilini az da olsa kurcalama fırsatınız olduysa, bir programlama dilinde
Kod:
if
deyimlerinin ne işe yaradığını az çok biliyorsunuzdur. Daha önceden hiç programcılık deneyiminiz olmamışsa da ziyanı yok. Zira bu bölümde
Kod:
if
deyimlerinin ne işe yaradığını ve nerelerde kullanıldığını enine boyuna tartışacağız.
İngilizce bir kelime olan ‘if‘, Türkçede ‘eğer’ anlamına gelir. Anlamından da çıkarabileceğimiz gibi, bu kelime bir koşul bildiriyor. Yani ‘eğer bir şey falanca ise...‘ ya da ‘eğer bir şey filanca ise...‘ gibi... İşte biz Python’da bir koşula bağlamak istediğimiz durumları
Kod:
if
deyimi aracılığıyla göstereceğiz.
Gelin isterseniz bu deyimi nasıl kullanacağımıza dair ufacık bir örnek vererek işe başlayalım:
Öncelikle elimizde şöyle bir değişken olsun:
n = 255

Yukarıda verdiğimiz değişkenin değerinin bir karakter dizisi değil, aksine bir sayı olduğunu görüyoruz. Şimdi bu değişkenin değerini sorgulayalım:
if n > 10:

Burada sayının 10’dan büyük olup olmadığına bakıyoruz.
Burada gördüğümüz > işaretinin ne demek olduğunu açıklamaya gerek yok sanırım. Hepimizin bildiği ‘büyüktür’ işareti Python’da da aynen bildiğimiz şekilde kullanılıyor. Mesela ‘küçüktür’ demek isteseydik, < işaretini kullanacaktık. İsterseniz hemen şurada araya girip bu işaretleri yeniden hatırlayalım:
Alıntı: İşleç
Anlamı>
büyüktür
<
küçüktür
>=
büyük eşittir
<=
küçük eşittir
==
eşittir
!=
eşit değildir
Gördüğünüz gibi hiçbiri bize yabancı gelecek gibi değil. Yalnızca en sondaki ‘eşittir’ (==) ve ‘eşit değildir’ (!=) işaretleri biraz değişik gelmiş olabilir. Burada ‘eşittir’ işaretinin = olmadığına dikkat edin. Python’da = işaretini değer atama işlemleri için kullanıyoruz. == işaretini ise iki adet değerin birbirine eşit olup olmadığını denetlemek için... Mesela:
>>> a = 26

Burada değeri 26 olan a adlı bir değişken belirledik. Yani a değişkenine değer olarak 26 sayısını atadık. Ayrıca burada, değer atama işleminin ardından Enter tuşuna bastıktan sonra Python hiçbir şey yapmadan bir alt satıra geçti. Bir de şuna bakalım:
>>> a == 26

True

Burada ise yaptığımız şey a değişkeninin değerinin 26 olup olmadığını sorgulamak
Kod:
a == 26
komutunu verdikten sonra Python bize True diye bir çıktı verdi. Bu çıktının anlamını biraz sonra öğreneceğiz. Ama şimdi isterseniz konuyu daha fazla dağıtmayalım. Biz şimdilik sadece = ve == işaretlerinin birbirinden tamamen farklı anlamlara geldiğini bilelim yeter.
Ne diyorduk?
if n > 10:

Bu ifadeyle Python’a şöyle bir şey demiş oluyoruz:
Alıntı:Eğer n sayısının değeri 10’dan büyükse...
Burada kullandığımız işaretlere dikkat edin. En sonda bir adet : işaretinin olduğunu gözden kaçırmıyoruz. Bu tür işaretler Python için çok önemlidir. Bunları yazmayı unutursak Python gözümüzün yaşına bakmayacaktır.
Dedik ki,
Kod:
if n > 10:
ifadesi, ‘eğer n değişkeninin değeri 10’dan büyükse...’ anlamına gelir. Bu ifadenin eksik olduğu apaçık ortada. Yani belli ki bu cümlenin bir de devamı olması gerekiyor. O halde biz de devamını getirelim:
if n > 10:
   print("sayı 10'dan büyüktür!")

Burada çok önemli bir durumla karşı karşıyayız. Dikkat ederseniz, ikinci satırı ilk satıra göre girintili yazdık. Elbette bunu şirinlik olsun diye yapmadık. Python programlama dilinde girintiler çok büyük önem taşır. Hatta ne kadarlık bir girinti verdiğiniz bile önemlidir. Eğer Python kodlarına duyarlı bir metin düzenleyici kullanıyorsanız, kullandığınız metin düzenleyici çoğu durumda sizin yerinize uygun bir şekilde girintilemeyi yapacaktır. Mesela IDLE adlı geliştirme ortamını kullananlar, ilk satırdaki : işaretini koyup Enter tuşuna bastıklarında otomatik olarak girinti verildiğini farkedeceklerdir. Eğer kullandığınız metin düzenleyici, satırları otomatik olarak girintilemiyorsa sizin bu girintileme işlemini elle yapmanız gerekecektir. Yalnız elle girintilerken, ne kadar girinti vereceğimize dikkat etmeliyiz. Genel kural olarak 4 boşlukluk bir girintileme uygun olacaktır. Girintileme işlemini klavyedeki sekme (Tab) tuşuna basarak da yapabilirsiniz. Ama aynı program içinde sekmelerle boşlukları karıştırmayın. Yani eğer girintileme işlemini klavyedeki boşluk (Space) tuşuna basarak yapıyorsanız, program boyunca aynı şekilde yapın. (Ben size girinti verirken Tab tuşu yerine Space tuşunu kullanmanızı tavsiye ederim). Kısaca söylemek gerekirse; Python’da girintileme ve girintilemede tutarlılık çok önemlidir. Özellikle büyük programlarda, girintilemeler açısından tutarsızlık gösterilmesi programın çalışmamasına sebep olabilir.
Python’da girintileme konusuyla ilgili daha ayrıntılı bilgi için: http://www.istihza.com/blog/python-ve-me...iler.html/
Eğer yukarıdaki
Kod:
if
bloğunu bir metin düzenleyici içine değil de doğrudan etkileşimli kabuğa yazmışsanız bazı şeyler dikkatinizi çekmiş olmalı. Etkileşimli kabukta
Kod:
if sayı > 10:
satırını yazıp Enter tuşuna bastığınızda şöyle bir görüntüyle karşılaşmış olmalısınız:
>>> if n > 10:
...

Dikkat ederseniz, >>> işareti, ... işaretine dönüştü. Eğer bu noktada herhangi bir şey yazmadan Enter tuşuna basacak olursanız Python size şöyle bir hata mesajı verecektir:
File "<stdin>", line 2
   ^
IndentationError: expected an indented block

Hata mesajında da söylendiği gibi, Python bizden girintilenmiş bir blok beklerken, biz onun bu beklentisini karşılamamışız. Dolayısıyla bize yukarıdaki hata mesajını göstermiş. ... işaretini gördükten sonra yapmamız gereken şey, dört kez boşluk (Space) tuşuna basarak girinti oluşturmak ve
Kod:
if
bloğunun devamını yazmak olmalıydı. Yani şöyle:
>>> if n > 10:
...      print("sayı 10'dan büyüktür!")
...

Gördüğünüz gibi,
Kod:
print()
fonksiyonunu yazıp Enter tuşuna bastıktan sonra yine ... işaretini gördük. Python burada bizden yeni bir satır daha bekliyor. Ama bizim yazacak başka bir kodumuz olmadığı için tekrar Enter tuşuna basıyoruz ve nihai olarak şöyle bir görüntü elde ediyoruz:
>>> if n > 10:
...      print("sayı 10'dan büyüktür!")
...
sayı 10'dan büyüktür!
>>>

Demek ki 250 sayısı 10‘dan büyükmüş! Ne büyük bir buluş! Merak etmeyin, daha çok şey öğrendikçe daha mantıklı programlar yazacağız. Burada amacımız işin temelini kavramak. Bunu da en iyi, (çok mantıklı olmasa bile) basit programlar yazarak yapabiliriz.
Şimdi metin düzenleyicimizi açarak daha mantıklı şeyler yazmaya çalışalım. Zira yukarıdaki örnekte değişkeni kendimiz belirlediğimiz için, bu değişkenin değerini
Kod:
if
deyimleri yardımıyla denetlemek pek akla yatkın görünmüyor. Ne de olsa değişkenin değerinin ne olduğunu biliyoruz. Dolayısıyla bu değişkenin 10 sayısından büyük olduğunu da biliyoruz! Bunu
Kod:
if
deyimiyle kontrol etmek çok gerekli değil. Ama şimdi daha makul bir iş yapacağız. Değişkeni biz belirlemek yerine kullanıcıya belirleteceğiz:
sayı = int(input("Bir sayı giriniz: "))

if sayı > 10:
   print("Girdiğiniz sayı 10'dan büyüktür!")

if sayı < 10:
   print("Girdiğiniz sayı 10'dan küçüktür!")

if sayı == 10:
   print("Girdiğiniz sayı 10'dur!")

Gördüğünüz gibi, art arda üç adet
Kod:
if
bloğu kullandık. Bu kodlara göre, eğer kullanıcının girdiği sayı 10‘dan büyükse, ilk
Kod:
if
bloğu işletilecek; eğer sayı 10‘dan küçükse ikinci
Kod:
if
bloğu işletilecek; eğer sayı 10’a eşit ise üçüncü
Kod:
if
bloğu işletilecektir. Peki ya kullanıcı muziplik yapıp sayı yerine harf yazarsa ne olacak? Böyle bir ihtimal için programımıza herhangi bir denetleyici yerleştirmedik. Dolayısıyla eğer kullanıcı sayı yerine harf girerse programımız hata verecek, yani çökecektir. Bu tür durumlara karşı nasıl önlem alacağımızı ilerleyen derslerimizde göreceğiz. Biz şimdilik bildiğimiz yolda yürüyelim.
Yukarıdaki örnekte
Kod:
input()
ile gelen karakter dizisini,
Kod:
int()
fonksiyonu yardımıyla bir sayıya dönüştürdüğümüze dikkat edin. Kullanıcıdan gelen veriyi büyüklük-küçüklük ölçütüne göre inceleyeceğimiz için, gelen veriyi bir sayıya dönüştürmemiz gerekiyor. Bunu da
Kod:
int()
fonksiyonu ile yapabileceğimizi biliyorsunuz.
Elbette yukarıdaki dönüştürme işlemini şöyle de yapabilirdik:
sayı = input("Bir sayı giriniz: ")
sayı = int(sayı)

Burada önce
Kod:
input()
fonksiyonuyla veriyi aldık, daha sonra bu veriyi ayrı bir yerde sayıya dönüştürüp tekrar sayı adlı değişkene atadık.
Kod:
if
deyimlerini kullanıcı adı veya parola denetlerken de kullanabiliriz. Mesela şöyle bir program taslağı yazabiliriz:
print("""
Dünyanın en gelişmiş e.posta hizmetine
hoşgeldiniz. Yalnız hizmetimizden
yararlanmak için önce sisteme giriş
yapmalısınız.
""")

parola = input("Parola: ")

if parola == "12345678":
   print("Sisteme Hoşgeldiniz!")

Gördüğünüz gibi, programın başında üç tırnak işaretlerinden yararlanarak uzun bir metni kullanıcıya gösterdik. Bu bölümü, kendiniz göze hoş gelecek bir şekilde süsleyebilirsiniz de. Eğer kullanıcı, kendisine parola sorulduğunda cevap olarak “12345678” yazarsa kullanıcıyı sisteme alıyoruz.
Yukarıdaki örnekte, kullanıcının girdiği parola “12345678” ise kendisine “Sisteme Hoşgeldiniz!” mesajını gösteriyoruz. Mantık olarak bunun tersini yapmak da mümkündür. Yani:
if parola != "12345678":
   print("Ne yazık ki yanlış parola girdiniz!")

Burada ise bir önceki örneğin mantığını ters çevirdik. Önceki örnekte parola değişkeni “12345678” adlı karakter dizisine eşitse (
Kod:
if parola == "12345678"
) bir işlem yapıyorduk. Yukarıdaki örnekte ise parola değişkeni “12345678” adlı karakter dizisine eşit değilse (
Kod:
if parola != "12345678"
) bir işlem yapıyoruz.
Bu iki örneğin de aslında aynı kapıya çıktığını görüyorsunuz. Tek değişiklik, kullanıcıya gösterilen mesajlardadır.
Böylece Python’daki koşullu durumlar üzerindeki incelememizin ilk ve en önemli aşamasını geride bırakmış olduk. Dikkat ettiyseniz
Kod:
if
deyimi sayesinde programlarımıza karar vermeyi öğrettik. Bu deyim yardımıyla, kullanıcıdan aldığımız herhangi bir verinin niteliği üzerinde kapsamlı bir karar verme işlemi yürütebiliyoruz. Yani artık programlarımız kullanıcıdan alınan veriyi olduğu gibi kabul etmekle yetinmiyor. Kullanıcının girdiği verinin ne olduğuna bağlı olarak programlarımızın farklı işlemler yapmasını da sağlayabiliyoruz.
Daha önce de söylediğimiz gibi,
Kod:
if
deyimi dışında Python’da koşullu durumları ifade etmek için kullandığımız,
Kod:
elif
ve
Kod:
else
adlı iki deyim daha vardır. Bunlar
Kod:
if
ile birlikte kullanılırlar. Gelin isterseniz bu iki deyimden, adı
Kod:
elif
olana bakalım.
elif
Python’da,
Kod:
if
deyimleriyle birlikte kullanılan ve yine koşul belirten bir başka deyim de
Kod:
elif
deyimidir. Buna şöyle bir örnek verebiliriz:
yaş = int(input("Yaşınız: "))

if yaş == 18:
   print("18 iyidir!")

elif yaş < 0:
   print("Yok canım, daha neler!...")

elif yaş < 18:
   print("Genç bir kardeşimizsin!")

elif yaş > 18:
   print("Eh, artık yaş yavaş yavaş kemale eriyor!")

Yukarıdaki örneği şöyle yazmayı da deneyebilirsiniz:
yaş = int(input("Yaşınız: "))

if yaş == 18:
   print("18 iyidir!")

if yaş < 0:
   print("Yok canım, daha neler!...")

if yaş < 18:
   print("Genç bir kardeşimizsin!")

if yaş > 18:
   print("Eh, artık yaş yavaş yavaş kemale eriyor!")

Bu iki programın da aynı işlevi gördüğünü düşünebilirsiniz. Ancak ilk bakışta pek belli olmasa da, aslında yukarıdaki iki program birbirinden farklı davranacaktır. Örneğin ikinci programda eğer kullanıcı eksi değerli bir sayı girerse hem
Kod:
if yaş < 0
bloğu, hem de
Kod:
if yaş < 18
bloğu çalışacaktır. İsterseniz yukarıdaki programı çalıştırıp, cevap olarak eksi değerli bir sayı verin. Ne demek istediğimiz gayet net anlaşılacaktır.
Bu durum
Kod:
if
ile
Kod:
elif
arasındaki çok önemli bir farktan kaynaklanır. Buna göre
Kod:
if
bize olası bütün sonuçları listeler,
Kod:
elif
ise sadece doğru olan ilk sonucu verir. Bu soyut tanımlamayı biraz daha somutlaştıralım:
a = int(input("Bir sayı giriniz: "))

if a < 100:
   print("verdiğiniz sayı 100'den küçüktür.")

if a < 50:
   print("verdiğiniz sayı 50'den küçüktür.")

if a == 100:
   print("verdiğiniz sayı 100'dür.")

if a > 100:
   print("verdiğiniz sayı 100'den büyüktür.")

if a > 150:
   print("verdiğiniz sayı 150'den büyüktür.")

Yukarıdaki kodları çalıştırdığımızda, doğru olan bütün sonuçlar listelenecektir. Yani mesela kullanıcı 40 sayısını girmişse, ekrana verilecek çıktı şöyle olacaktır:
verdiğiniz sayı 100'den küçüktür.
verdiğiniz sayı 50'den küçüktür.

Burada 40 sayısı hem 100‘den, hem de 50‘den küçük olduğu için iki sonuç da çıktı olarak verilecektir. Ama eğer yukarıdaki kodları şöyle yazarsak:
a = int(input("Bir sayı giriniz: "))

if a < 100:
   print("verdiğiniz sayı 100'den küçüktür.")

elif a < 50:
   print("verdiğiniz sayı 50'den küçüktür.")

elif a == 100:
   print("verdiğiniz sayı 100'dür.")

elif a > 150:
   print("verdiğiniz sayı 150'den büyüktür.")

elif a > 100:
   print("verdiğiniz sayı 100'den büyüktür.")

Kullanıcının 40 sayısını girdiğini varsaydığımızda, bu defa programımımız yalnızca şu çıktıyı verecektir:
verdiğiniz sayı 100'den küçüktür.

Gördüğünüz gibi,
Kod:
elif
deyimlerini kullandığımız zaman, ekrana yalnızca doğru olan ilk sonuç veriliyor. Yukarıda 40 sayısı hem 100‘den hem de 50‘den küçük olduğu halde, Python bu sayının 100‘den küçük olduğunu görür görmez sonucu ekrana basıp, öteki koşul bloklarını incelemeyi bırakıyor.
Kod:
if
deyimlerini arka arkaya sıraladığımızda ise, Python bütün olasılıkları tek tek değerlendirip, geçerli olan bütün sonuçları ekrana döküyor.
Bir sonraki bölümde
Kod:
else
deyimini öğrendiğimiz zaman,
Kod:
elif
‘in tam olarak ne işe yaradığını çok daha iyi anlamanızı sağlayacak bir örnek vereceğiz.
Şimdiye kadar verdiğimiz örneklerden de rahatlıkla anlayabileceğiniz gibi, ilk koşul bloğunda asla
Kod:
elif
deyimi kullanılamaz. Bu deyimin kullanılabilmesi için kendisinden önce en az bir adet
Kod:
if
bloğu olmalıdır. Yani Python’da koşullu durumları ifade ederken ilk koşul bloğumuz her zaman
Kod:
if
deyimi ile başlamalıdır.
Kod:
elif
‘i de incelediğimize göre, koşul bildiren deyimlerin sonuncusuna göz atabiliriz:
Kod:
else
else
Şimdiye kadar Python’da koşul bildiren iki deyimi öğrendik. Bunlar
Kod:
if
ve
Kod:
elif
idi. Bu bölümde ise koşul deyimlerinin sonuncusu olan
Kod:
else
deyimini göreceğiz. Öğrendiğimiz şeyleri şöyle bir gözden geçirecek olursak, temel olarak şöyle bir durumla karşı karşıya olduğumuzu görürüz:
if falanca:
   bu işlemi yap

if filanca:
   şu işlemi yap

Veya şöyle bir durum:
if falanca:
   bu işlemi yap

elif filanca:
   şu işlemi yap

Kod:
if
ile
Kod:
elif
arasındaki farkı biliyoruz. Eğer
Kod:
if
deyimlerini art arda sıralayacak olursak, Python doğru olan bütün sonuçları listeleyecektir. Ama eğer
Kod:
if
deyiminden sonra
Kod:
elif
deyimini kullanırsak, Python doğru olan ilk sonucu listelemekle yetinecektir.
Bu bölümde göreceğimiz
Kod:
else
deyimi, yukarıdaki tabloya bambaşka bir boyut kazandırıyor. Dikkat ederseniz şimdiye kadar öğrendiğimiz deyimleri kullanabilmek için ilgili bütün durumları tanımlamamız gerekiyordu. Yani:
eğer böyle bir durum varsa:
   bunu yap

eğer şöyle bir durum varsa:
   şunu yap

eğer filancaysa:
   şöyle git

eğer falancaysa:
   böyle gel

gibi...
Ancak her durum için bir
Kod:
if
bloğu yazmak bir süre sonra yorucu ve sıkıcı olacaktır. İşte bu noktada devreye
Kod:
else
deyimi girecek.
Kod:
else
‘in anlamı kabaca şudur:
Alıntı:Eğer yukarıdaki koşulların hiçbiri gerçekleşmezse...
Gelin isterseniz bununla ilgili şöyle bir örnek verelim:
soru = input("Bir meyve adı söyleyin bana:")

if soru == "elma":
   print("evet, elma bir meyvedir...")

elif soru == "karpuz":
   print("evet, karpuz bir meyvedir...")

elif soru == "armut":
   print("evet, armut bir meyvedir...")

else:
   print(soru, "gerçekten bir meyve midir?")

Eğer kullanıcı soruya ‘elma’, ‘karpuz’ veya ‘armut’ cevabı verirse, evet, ... bir meyvedir çıktısı verilecektir. Ama eğer kullanıcı bu üçü dışında bir cevap verirse, ... gerçekten bir meyve midir? çıktısını görürüz. Burada
Kod:
else
deyimi, programımıza şu anlamı katıyor:
Alıntı:Eğer kullanıcı yukarıda belirlenen meyve adlarından hiç birini girmez, bunların yerine bambaşka bir şey yazarsa, o zaman
Kod:
else
bloğu içinde belirtilen işlemi gerçekleştir.
Dikkat ederseniz yukarıdaki kodlarda
Kod:
if
deyimlerini art arda sıralamak yerine ilk
Kod:
if
‘ten sonra
Kod:
elif
ile devam ettik. Peki şöyle bir şey yazarsak ne olur?
soru = input("Bir meyve adı söyleyin bana:")

if soru == "elma":
   print("evet, elma bir meyvedir...")

if soru == "karpuz":
   print("evet, karpuz bir meyvedir...")

if soru == "armut":
   print("evet, armut bir meyvedir...")

else:
   print(soru, "gerçekten bir meyve midir?")

Bu kodlar beklediğiniz sonucu vermeyecektir. İsterseniz yukarıdaki kodları çalıştırıp ne demek istediğimizi daha iyi anlayabilirsiniz. Eğer yukarıda olduğu gibi
Kod:
if
deyimlerini art arda sıralar ve son olarak da bir
Kod:
else
bloğu tanımlarsak, ekrana ilk bakışta anlamsız gibi görünen bir çıktı verilecektir:
evet, elma bir meyvedir...
elma gerçekten bir meyve midir?

Burada olan şey şu:
Soruya ‘elma’ cevabını verdiğimizi düşünelim. Bu durumda, Python ilk olarak ilk
Kod:
if
bloğunu değerlendirecek ve soruya verdiğimiz cevap ‘elma’ olduğu için evet, elma bir meyvedir... çıktısını verecektir.
Kod:
if
ile
Kod:
elif
arasındaki farkı anlatırken, hatırlarsanız art arda gelen
Kod:
if
bloklarında Python’ın olası bütün sonuçları değerlendireceğini söylemiştik. İşte burada da böyle bir durum söz konusu. Gördüğünüz gibi, ilk
Kod:
if
bloğundan sonra yine bir
Kod:
if
bloğu geliyor. Bu nedenle Python olası bütün sonuçları değerlendirebilmek için blokları okumaya devam edecek ve sorunun cevabı ‘karpuz’ olmadığı için ikinci
Kod:
if
bloğunu atlayacaktır.
Sonraki blok yine bir
Kod:
if
bloğu olduğu için Python kodları okumaya devam ediyor. Ancak sorunun cevabı ‘armut’ da olmadığı için, Python sonraki
Kod:
if
bloğunu da geçiyor ve böylece
Kod:
else
bloğuna ulaşıyor.
Yukarıda verdiğimiz örnekteki gibi art arda
Kod:
if
deyimlerinin sıralanıp en sona
Kod:
else
deyiminin yerleştirildiği durumlarda
Kod:
else
deyimi sadece bir önceki
Kod:
if
deyimini dikkate alarak işlem yapar. Yani yukarıdaki örnekte kullanıcının verdiği cevap ‘armut’ olmadığı için
Kod:
else
deyiminin olduğu blok çalışmaya başlar. Yukarıdaki örneğe ‘armut’ cevabını verirseniz ne demek istediğimi biraz daha iyi anlayabilirsiniz. ‘armut’ cevabı verilmesi durumunda sadece
Kod:
if soru == "armut"
ifadesinin olduğu blok çalışır,
Kod:
else
bloğu ise çalışmaz. Çünkü dediğim gibi, eğer
Kod:
else
bloğundan önce art arda gelen
Kod:
if
blokları varsa,
Kod:
else
deyimi yalnızca kendisinden önceki son
Kod:
if
bloğunu dikkate alır ve sanki yukarıdaki örnek şöyleymiş gibi davranır:
if soru == "armut":
   print("evet, armut bir meyvedir...")

else:
   print(soru, "gerçekten bir meyve midir?")

Bu tür durumlarda
Kod:
else
deyimi bir önceki
Kod:
if
bloğundan önce gelen bütün
Kod:
if
bloklarını görmezden gelir ve böylece şu anlamsız görünen çıktı elde edilir:
evet, elma bir meyvedir...
elma gerçekten bir meyve midir?

Sözün özü, kullanıcının cevabı ‘elma’ olduğu için, yukarıdaki çıktıda yer alan ilk cümle ilk
Kod:
if
bloğunun çalışması sonucu ekrana basılıyor. İkinci cümle ise
Kod:
else
bloğundan bir önceki
Kod:
if
bloğu kullanıcının cevabıyla uyuşmadığı için ekrana basılıyor.
Yalnız bu dediğimizden,
Kod:
else
ifadesi
Kod:
if
ile birlikte kullanılmaz, anlamı çıkarılmamalı. Mesela şöyle bir örnek yapılabilir:
soru = input("Programdan çıkmak istediğinize emin misiniz? \
Eminseniz 'e' harfine basın : ")

if soru == "e":
   print("Güle güle!")

else:
   print("Peki, biraz daha sohbet edelim!")

Burada eğer kullanıcının cevabı ‘e’ ise
Kod:
if
bloğu işletilecek, eğer cevap ‘e’ dışında herhangi bir şey ise
Kod:
else
bloğu çalışacaktır. Gayet mantıklı bir süreç. Ama eğer yukarıdaki örneğe bir
Kod:
if
bloğu daha eklerseniz işler beklediğiniz gibi gitmez:
soru = input("Programdan çıkmak istediğinize emin misiniz? \
Eminseniz 'e' harfine basın : ")

if soru == "e":
   print("Güle güle!")

if soru == "b":
   print("Kararsız kaldım şimdi!")

else:
   print("Peki, biraz daha sohbet edelim!")

Bu soruya ‘e’ cevabı verdiğimizi düşünelim. Bu cevap ilk
Kod:
if
bloğuyla uyuşuyor ve böylece ekrana Güle güle! çıktısı veriliyor. İlk
Kod:
if
bloğundan sonra tekrar bir
Kod:
if
bloğu daha geldiği için Python bütün olasılıkları değerlendirmek amacıyla blokları okumaya devam ediyor ve cevap ‘b’ olmadığı için ikinci
Kod:
if
bloğunu atlıyor ve böylece
Kod:
else
bloğuna ulaşıyor. Bir önceki örnekte de söylediğimiz gibi,
Kod:
else
bloğu art arda gelen
Kod:
if
blokları gördüğünde sadece bir önceki
Kod:
if
bloğunu dikkate aldığı ve kullanıcının cevabı da ‘b’ olmadığı için ekrana Peki, biraz daha sohbet edelim! çıktısını veriyor ve ilk bakışta tuhaf görünen şöyle bir çıktı üretiyor:
Güle güle!
Peki, biraz daha sohbet edelim!

Dolayısıyla, eğer programınızda bir
Kod:
else
bloğuna yer verecekseniz, ondan önce gelen koşullu durumların ilkini
Kod:
if
ile sonrakileri ise
Kod:
elif
ile bağlayın. Yani:
if koşul_1:
   sonuç_1

elif koşul_2:
   sonuç_2

elif koşul_3:
   sonuç_3

else:
   sonuç_4

Ama eğer
Kod:
else
bloğundan önce sadece tek bir koşul bloğu yer alacaksa bunu
Kod:
if
ile bağlayın. Yani:
if koşul_1:
   sonuç_1

else:
   sonuç_2

Programlarımızın doğru çalışması ve istediğimiz sonucu verebilmesi için bu tür ayrıntılara olabildiğince dikkat etmemiz gerekiyor. Neticede koşullu durumlar mantıkla ilgilidir. Dolayısıyla koşullu durumlarla muhatap olurken mantığınızı hiçbir zaman devre dışı bırakmamalısınız.
Bir önceki bölümde
Kod:
elif
deyiminin tam olarak ne işe yaradığını anlamamızı sağlayacak bir örnek vereceğimizi söylemiştik. Şimdi bu örneğe bakalım:
boy = int(input("boyunuz kaç cm?"))

if boy < 170:
   print("boyunuz kısa")

elif boy < 180:
   print("boyunuz normal")

else:
   print("boyunuz uzun")

Yukarıda yedi satırla hallettiğimiz işi sadece
Kod:
if
deyimleriyle yapmaya çalışırsanız bunun ne kadar zor olduğunu göreceksiniz. Diyelim ki kullanıcı ‘165’ cevabını verdi. Python bu 165 sayısının 170‘ten küçük olduğunu görünce boyunuz kısa cevabını verecek, öteki satırları değerlendirmeyecektir. 165 sayısı,
Kod:
elif
ile gösterdiğimiz koşullu duruma da uygun olduğu halde (
Kod:
165 < 180
), koşul ilk blokta karşılandığı için ikinci blok değerlendirmeye alınmayacaktır.
Kullanıcının ‘175’ cevabını verdiğini varsayalım: Python 175 sayısını görünce önce ilk koşula bakacak, verilen 175 sayısının ilk koşulu karşılamadığını görecektir (
Kod:
175 > 170
). Bunun üzerine Python kodları incelemeye devam edecek ve
Kod:
elif
bloğunu değerlendirmeye alacaktır. 175 sayısının 180‘den küçük olduğunu görünce de çıktı olarak boyunuz normal cevabını verecektir.
Peki ya kullanıcı ‘190’ cevabını verirse ne olacak? Python yine önce ilk
Kod:
if
bloğuna bakacak ve 190 cevabının bu bloğa uymadığını görecektir. Dolayısıyla ilk bloğu bırakıp ikinci bloğa bakacaktır. 190 cevabının bu bloğa da uymadığını görünce, bir sonraki bloğu değerlendirmeye alacaktır. Bir sonraki blokta ise
Kod:
else
deyimimiz var. Bu bölümde öğrendiğimiz gibi,
Kod:
else
deyimi, ‘eğer kullanıcının cevabı yukarıdaki koşulların hiçbirine uymazsa bu bloğu çalıştır,’ anlamına geliyor. Kullanıcının girdiği 190 cevabı ne birinci ne de ikinci bloktaki koşula uyduğu için, normal bir şekilde
Kod:
else
bloğu işletilecek, dolayısıyla da ekrana boyunuz uzun çıktısı verilecektir.
Böylece Python’da
Kod:
if
,
Kod:
elif
ve
Kod:
else
deyimlerini incelemiş olduk. Ancak tabii ki bu deyimlerle işimiz henüz bitmedi. Elimizdeki bilgiler şimdilik bu deyimleri ancak bu kadar incelememize yetiyor, ama ilerleyen sayfalarda bazı başka araçları da bilgi dağarcığımıza kattıktan sonra bu deyimlerin daha farklı yönlerini öğrenme imkanına kavuşacağız.
Örnek Uygulama
Önceki derslerimizde
Kod:
len()
fonksiyonunu anlatırken şöyle bir program tasarısından bahsetmiştik hatırlarsanız:
Alıntı:Diyelim ki sisteme kayıt için kullanıcı adı ve parola belirlenmesini isteyen bir program yazıyorsunuz. Yazacağınız bu programda, belirlenebilecek kullanıcı adı ve parolanın toplam uzunluğu 40 karakteri geçmeyecek.
O zaman henüz koşullu durumları öğrenmemiş olduğumuz için, yukarıda bahsettiğimiz programın ancak şu kadarlık kısmını yazabilmiştik:
kullanıcı_adı = input("Kullanıcı adınız: ")
parola        = input("Parolanız       : ")

toplam_uzunluk = len(kullanıcı_adı) + len(parola)

Burada yapabildiğimiz tek şey, kullanıcıdan kullanıcı adı ve parola bilgilerini alıp, bu bilgilerin karakter uzunluğunu ölçebilmekti. Ama artık koşullu durumları öğrendiğimize göre bu programı eksiksiz olarak yazabiliriz. Şu kodları dikkatlice inceleyin:
kullanıcı_adı = input("Kullanıcı adınız: ")
parola        = input("Parolanız       : ")

toplam_uzunluk = len(kullanıcı_adı) + len(parola)

mesaj = "Kullanıcı adı ve parolanız toplam {} karakterden oluşuyor!"

print(mesaj.format(toplam_uzunluk))

if toplam_uzunluk > 40:
   print("Kullanıcı adınız ile parolanızın ",
         "toplam uzunluğu 40 karakteri geçmemeli!")
else:
   print("Sisteme hoşgeldiniz!")

Burada öncelikle kullanıcıdan kullanıcı adı ve parola bilgilerini alıyoruz. Daha sonra da kullanıcıdan gelen bu bilgilerin toplam karakter uzunluğunu hesaplıyoruz. Bunun için
Kod:
len()
fonksiyonundan yararlanmamız gerektiğini hatırlıyor olmalısınız.
Eğer toplam uzunluk 40 karakterden fazla ise,
Kod:
if
bloğunda verilen mesajı gösteriyoruz. Bunun dışındaki bütün durumlarda ise
Kod:
else
bloğunu devreye sokuyoruz.


kaynak: http://belgeler.istihza.com/py3/kosul_deyimleri.html
[img=0x200]http://i.hizliresim.com/vL7jVO.png[/img]
Cevapla
Teşekkür verenler:


Hızlı Menü:


Şu anda bu konuyu okuyanlar: 5 Ziyaretçi


10tl.net Destek Forumu -

Online Shopping App
Online Shopping - E-Commerce Platform
Online Shopping - E-Commerce Platform
Feinunze Schmuck Jewelery Online Shopping