328 entry daha
  • python'da koşul belirten deyimlerden biri. görünüşte if ile aynı görevi paylaşıyor gibi dursa da çok önemli bir fark var. en basit haliyle anlatmaya çalışacağım:

    farz edelim ki kullanıcıya üç kişiden birini seçme hakkı verdik. bunlar: ali,ayşe ve fatma. kullanıcı bu üç isimden birini seçecek ve biz de ona göre cevap vereceğiz.

    soru=input("seçtiğiniz kişi:")

    if soru=="ali":
    print("ali'yi ben de severim. iyi çocuktur.")
    if soru=="ayşe":
    print("ayşe'yi seçmekle çok iyi ettin.")
    if soru=="fatma":
    print("fatma'yı seçtiğine pişman olmayacaksın.")
    else:
    print("niye böyle oldu ki?")

    gibi saçma sapan bir şey yazdık.

    beklenen sonuç şu: kullanıcı ayşe diyecek ve "ayşe'yi seçmekle çok iyi ettin." cevabını alacak. fakat else söz konusu iken işler hiç böyle yürümüyor.
    else kendinden önceki koşulun durumuna bakıyor. burada "fatma" cevabı verilmediği için rahat. bu şartlar altında da üstümdeki doğru değil, öyleyse benim görev vaktim geldi diyerek şöyle bir çıktı oluşmasına yol açıyor:

    ali'yi ben de severim. iyi çocuktur.
    niye böyle oldu ki?

    if olası tüm sonuçları değerlendiriyor ve bunu üstten alta doğru yaptığı için ikinci ve üçüncü bloğu atlayarak devam ediyor çünkü "ayşe" ya da "fatma" yazılmadı. else'i de okuyor ve else üstündeki deyimi okuduğundan oradaki cevabın uyuşmaması sonucu böyle bir sonuç ortaya çıkıyor.

    bu durumda "fatma" cevabı verilmiş olsaydı "fatma'yı seçtiğine pişman olmayacaksın." diye bir cevap alınacaktı. çünkü else üstündeki blog uyuştuğu için çalışmayacaktı.

    işte bu sorunu çözecek deyim:elif

    eğer kodlar şöyle olursa

    soru=input("seçtiğiniz kişi:")

    if soru=="ali":
    print("ali'yi ben de severim. iyi çocuktur.")
    elif soru=="ayşe":
    print("ayşe'yi seçmekle çok iyi ettin.")
    elif soru=="fatma":
    print("fatma'yı seçtiğine pişman olmayacaksın.")
    else:
    print("niye böyle oldu ki?")

    bu saçma program düzgün çalışacak.

    bunun sebebi if'in bütün olası sonuçları ortaya koyarken elif'in yalnızca doğru cevabı vermesi.
96 entry daha
hesabın var mı? giriş yap