La declaración for ... else
se utiliza para implementar bucles de búsqueda.
En particular, maneja el caso donde un bucle de búsqueda no puede encontrar nada.
for z in xrange(10):
if z == 5:
# We found what we are looking for
print "we found 5"
break # The else statement will not execute because of the break
else:
# We failed to find what we were looking for
print "we failed to find 5"
z = None
print 'z = ', z
de salida:
we found 5
z = 5
Esa búsqueda es la misma que
z = None
for z in xrange(10):
if 5 == z:
# We found what we are looking for
break
if z == None:
print "we failed to find 5"
else:
print "we found 5"
print 'z = ', z
Recuerde que for
no inicializa z si la lista de búsqueda está vacío (es decir []
). Es por eso que debemos asegurarnos de que z se define cuando lo usamos después de la búsqueda. Lo siguiente generará una excepción porque z
no está definido cuando intentamos imprimirlo.
for z in []:
if 5 == z:
break
print "z = ",z
salida
print "z = ",z
NameError: name 'z' is not defined
En resumen, la cláusula else
se ejecutará siempre que el bucle for
termina naturalmente. Si se produce un corte o una excepción en el bucle for
, la instrucción else
no se ejecutará.
... o una excepción lanzada –
¡Oh, eso lo sé! Muchísimas gracias. – Jimmy