While-else ve for-else

While-else ve for-else konularını mümkün olduğunca detaylı ve sade anlatabilir mi birisi?

Aslında while-else ve for-else deyimlerinin if-else deyimine oldukça benzer bir yapısı var. Sizinle açıklamalarıyla birlikte bir kaç basit örnek paylaşayım.

Örnek-1:

a = 1
while a < 10: # a, 10'dan küçük olduğu sürece
    a += 1  # a, 1 birim arttırılır.
else: # Şayet a, 10'dan küçük olmazsa
    print(a)  # a'nın değeri ekrana yazdırılır.

Örnek-2

for i in range(10): # 0'dan 9'a kadar olan her bir i sayısı için
    pass # pass komutu çalıştırılır. Yani hiçbir işlem yapılmaz.
else: # Bu döngü bittikten sonra 
    print(i) # i değerinin aldığı son değer ekrana yazdırılır.

Örnek-3

for i in range(2, 10): # 2'den 10'a kadar olan her bir i sayısı için
    for j in range(2, i): # 2'den i'ye kadar olan her bir j sayısı için
        if i % j == 0: # Eğer i bölü j işleminde kalan 0 ise
            break # İçteki for döngüsü durdurulur.
    else: # Şayet içteki for döngüsünü durdurmayan sayı değerleri var ise
        print(i) # Bu değerler ekrana yazdırılır.

Örnek-4

veri_girisi = input("Sayı gir: ") # Kullanıcıdan değer girmesi istenir.
while not veri_girisi.isnumeric(): # Kullanıcının girdiği değer sayı olmadığı müddetçe
    veri_girisi = input("Sayı gir: ") # Kullanıcıdan tekrar değer girmesi istenir.
else: # Şayet kullanıcının girdiği değer sayı ise
    print(veri_girisi) # Bu değer ekrana yazdırılır.
2 Beğeni

@dildeolupbiten Sitede loop-else anlatılmamış. Bence siz eklemelisiniz, bu konunun da bilinmesinde fayda var.

Hangi sitede, yazbel belgelerinden mi bahsediyorsunuz?

@dildeolupbiten Evet.

Sanki dokümanın içinde belgenin bir yerlerinde for-else ile alakalı bir örnek görmüştüm diye hatırlıyorum ama emin olamadım. neyse belki uygun bir yere eklenebilir.

Varsa bile while-else ile birlikte daha kapsamlı anlatılmalı.

Arkadaşlar, bu formülde

`for i in range(2, 10): 
  for j in range(2, i): 
        if i % j == 0: 
            break 
    else: 
        print(i)
` 

Sonuçlarımız:

2,3,5,7

arasında neden 2 var. i 'ye 2 değeri verilirken j 'yede 2 değeri verilip sonuç 2%2=0 olmuyor mu?

i = 2 iken for j in range(2, 2) gibi bir ifade oluşuyor. Ve range(2, 2)'nin eleman sayısı 0 olduğu için, for blokunda yer alan if i % j == 0: ifadesine geçilmiyor, doğrudan else satırına geçiliyor.

Örnek:

for j in range(2, 2):
    print("Döngünün içindeyiz")
else:
    print("Döngünün dışındayız.")
1 Beğeni