Else çalışma mantığı nasıldır?

EL _PATRON

Üye
28 May 2022
53
1
13
hocam iki kod arasında else yüzünden caliişma farkı oluyor bir açıklama istiyorum size zahmet
Kod:
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...")
elif soru == "çilek":
    print("evet, çilek bir meyvedir...")
else:
    print(soru, "gerçekten bir meyve midir?")
bu kodda soru ya çilek degeri atanınca else bloğu çalışmıyor ama :

Kod:
soru = input("Bir meyve adı söyleyin bana:")
if soru == "elma":
    print("evet, elma bir meyvedir...")
elif soru == "karpuz":
    print("evet, karpuz bir meyvedir...")
if soru == "armut":
    print("evet, armut bir meyvedir...")
if soru == "çilek":
    print("evet, çilek bir meyvedir...")
else:
    print(soru, "gerçekten bir meyve midir?")
bu kodda soruya karpuz degeri verince else bloğu calışıyor nedenn peki?
 

Grimner

Adanmış Üye
28 Mar 2020
6,321
120
4,776
Öncelikle kodu bu şekilde kullanmak pek doğru değil.

Doğru kullanım şekli
Python:
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...")
elif soru == "çilek":
    print("evet, çilek bir meyvedir...")
else:
    print(soru, "gerçekten bir meyve midir?")

Bu kod daha doğru olacaktır.
Zaten bir tanesi doğru ise diğerlerini kontrol ettirmene gerek kalmaz.

Soruna gelecek olursak.

Python:
if soru == "çilek":
    print("evet, çilek bir meyvedir...")
else:
    print(soru, "gerçekten bir meyve midir?")

Sen bu kodda diyorsun ki.
Eğer girilen değer çilek değilse meyve değil de.

Python:
if soru == "elma":
    print("evet, elma bir meyvedir...")
elif soru == "karpuz":
    print("evet, karpuz bir meyvedir...")
if soru == "armut":
    print("evet, armut bir meyvedir...")
if soru == "çilek":
    print("evet, çilek bir meyvedir...")
else:
    print(soru, "gerçekten bir meyve midir?")

Bu aşırı kötü bir kullanım yani.
Zaten cevabı bulduğu halde işleme devam ediyor çünkü.
 

Helmsys

Ar-Ge Ekibi Kıdemli
16 Mar 2022
1,492
25
1,653
Öncelikle, if-elif-else arasındaki bağlantıyı biraz anlamak gerekiyor. Bağlantıdan kastımda kullanıldığı şekliyle.

Birden fazla if bloğu, kendisinden önceki if bloklarından bağımsız olarak değerlendiriliyor.
Elif, kendinden bir önceki koşul gerçekleşmez ise değerlendiriliyor, yani kendisi bağımlı bir blok. Kendisinden önce gerçekleştiğini umduğumuz koşul durumu gerçekleşmezse ya da yazdığınız koşula göre işler yürümezse işleme alınacak blok.

Else ise hiçbir koşul gözetmeksizin çalışacak kod bloğu.


karpuz degeri verince else bloğu calışıyor nedenn peki?
Çünkü kendisinden hemen önce elma'mı diye sorgu yapmışsın.
Haliyle kendisinden önceki işlem şayet gerçekleşmezse ki buda else if yani elif yapısıdır. Bundan dolayı tetikleniyor. altta kalan birbirinden bağımsız if koşullarıda koşullara uymadığından oradaki çıktılar ekranda gözükmüyor yani o koşullar sağlanmamış oluyor. Haliyle kendinden önce gelen if koşullarındaki durumlar gerçekleşmediğinden en alttaki else bloğuda okunuyor.
 

EL _PATRON

Üye
28 May 2022
53
1
13
Öncelikle, if-elif-else arasındaki bağlantıyı biraz anlamak gerekiyor. Bağlantıdan kastımda kullanıldığı şekliyle.

Birden fazla if bloğu, kendisinden önceki if bloklarından bağımsız olarak değerlendiriliyor.
Elif, kendinden bir önceki koşul gerçekleşmez ise değerlendiriliyor, yani kendisi bağımlı bir blok. Kendisinden önce gerçekleştiğini umduğumuz koşul durumu gerçekleşmezse ya da yazdığınız koşula göre işler yürümezse işleme alınacak blok.

Else ise hiçbir koşul gözetmeksizin çalışacak kod bloğu.


Çünkü kendisinden hemen önce elma'mı diye sorgu yapmışsın.
Haliyle kendisinden önceki işlem şayet gerçekleşmezse ki buda else if yani elif yapısıdır. Bundan dolayı tetikleniyor. altta kalan birbirinden bağımsız if koşullarıda koşullara uymadığından oradaki çıktılar ekranda gözükmüyor yani o koşullar sağlanmamış oluyor. Haliyle kendinden önce gelen if koşullarındaki durumlar gerçekleşmediğinden en alttaki else bloğuda okunuyor.
Eyvallah abi

Öncelikle kodu bu şekilde kullanmak pek doğru değil.

Doğru kullanım şekli
Python:
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...")
elif soru == "çilek":
    print("evet, çilek bir meyvedir...")
else:
    print(soru, "gerçekten bir meyve midir?")

Bu kod daha doğru olacaktır.
Zaten bir tanesi doğru ise diğerlerini kontrol ettirmene gerek kalmaz.

Soruna gelecek olursak.

Python:
if soru == "çilek":
    print("evet, çilek bir meyvedir...")
else:
    print(soru, "gerçekten bir meyve midir?")

Sen bu kodda diyorsun ki.
Eğer girilen değer çilek değilse meyve değil de.

Python:
if soru == "elma":
    print("evet, elma bir meyvedir...")
elif soru == "karpuz":
    print("evet, karpuz bir meyvedir...")
if soru == "armut":
    print("evet, armut bir meyvedir...")
if soru == "çilek":
    print("evet, çilek bir meyvedir...")
else:
    print(soru, "gerçekten bir meyve midir?")

Bu aşırı kötü bir kullanım yani.
Zaten cevabı bulduğu halde işleme devam ediyor çünkü.
Teşekkürler abim
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.