Katılıyorum, daha çok 'elif değil [koşul (lar) yükseltme molası]' gibi.
Bu eski bir konu olduğunu biliyorum, ama şu anda aynı soruya bakıyorum ve kimse bu sorunun cevabını anladığım şekilde ele geçirdiğinden emin değilim.
Benim için, hepsi eşdeğer olan else
in For... else
veya While... else
ifadeleri "okumanın" üç yolu vardır:
else
==
if the loop completes normally (without a break or error)
else
==
if the loop does not encounter a break
else
==
else not (condition raising break)
(muhtemelen böyle bir durum vardır, ya da bir döngünüz olmaz)
Yani, esasen, bir döngüdeki "else" gerçekten bir "elif ..." dir, burada '...' (1) hiçbir mola değildir, bu da (2) NOT [koşul (lar) yükseltme molasına] DEĞİLDİR.
Ben anahtarı else
'sonu' olmadan anlamsız olduğunu düşünüyorum , bu yüzden bir for...else
içerir:
for:
do stuff
conditional break # implied by else
else not break:
do more stuff
Yani, bir for...else
döngünün temel unsurları aşağıdaki gibidir ve bunları plainer İngilizce'de şu şekilde okursunuz:
for:
do stuff
condition:
break
else: # read as "else not break" or "else not condition"
do more stuff
Diğer posterlerin söylediği gibi, genellikle döngünüzün aradığını bulabildiğinizde bir mola verilir, böylece else:
"hedef öğe bulunmazsa ne yapmalı" olur.
Misal
İstisna işleme, aralar ve döngüler için birlikte kullanabilirsiniz.
for x in range(0,3):
print("x: {}".format(x))
if x == 2:
try:
raise AssertionError("ASSERTION ERROR: x is {}".format(x))
except:
print(AssertionError("ASSERTION ERROR: x is {}".format(x)))
break
else:
print("X loop complete without error")
Sonuç
x: 0
x: 1
x: 2
ASSERTION ERROR: x is 2
----------
# loop not completed (hit break), so else didn't run
Misal
Bir mola ile basit örnek.
for y in range(0,3):
print("y: {}".format(y))
if y == 2: # will be executed
print("BREAK: y is {}\n----------".format(y))
break
else: # not executed because break is hit
print("y_loop completed without break----------\n")
Sonuç
y: 0
y: 1
y: 2
BREAK: y is 2
----------
# loop not completed (hit break), so else didn't run
Misal
Kesinti, kopukluk koşulu ve hata ile karşılaşılmayan basit örnek.
for z in range(0,3):
print("z: {}".format(z))
if z == 4: # will not be executed
print("BREAK: z is {}\n".format(y))
break
if z == 4: # will not be executed
raise AssertionError("ASSERTION ERROR: x is {}".format(x))
else:
print("z_loop complete without break or error\n----------\n")
Sonuç
z: 0
z: 1
z: 2
z_loop complete without break or error
----------