A instrução for ... else em Python
Na programação, usamos loops para iterar diferentes tipos de objetos. O loop for
é um dos loops mais usados devido à sua simplicidade.
Python tem um recurso muito interessante associado ao loop for
. Ele nos permite usar a instrução else
com o loop for
para combinar a execução da condição e a iteração. A palavra-chave else
é geralmente usada em instruções if-else, onde a usamos para executar alguns comandos quando a condição if retorna falsa.
No entanto, este não é o caso quando trabalhamos com o loop for
em Python. As instruções no bloco else
são executadas com base em uma cláusula de conclusão quando o loop termina, desde que o loop não encontre a instrução break
em nenhuma de suas iterações. A instrução break
é usada para sair de um loop. Se nenhuma instrução break
for encontrada, as instruções de bloco else
também serão executadas após o loop.
Se a instrução continue
for encontrada, a instrução else
será executada. Isso ocorre porque a instrução continue
força a próxima iteração. Não interrompe o bucle.
Veja o seguinte código.
for i in range(3):
if i > 5:
break
else:
print("Else Statements")
for i in range(3):
if i > 1:
print("Break")
break
else:
print("Else Statements")
for i in range(3):
if i > 1:
continue
else:
print("Else Statements after Continue")
Resultado:
Else Statements
Break
Else Statements after Continue
Agora, o uso de for...else
não é bem recebido por muitos programadores experientes, pois pode levar à confusão sobre o uso da palavra-chave else
. No entanto, ele ainda tem alguns aplicativos úteis em Python.
Por exemplo, podemos usá-lo se estivermos procurando por um elemento em uma lista e quisermos saber se ele está presente na lista ou não. O trecho de código a seguir implementa isso.
a = 15
lst = [10, 5, 6, 8, 9, 7, 5, 11]
for i in lst:
if i == 15:
print("Found")
break
else:
print("Not Found Loop Over")
Resultado:
Not Found Loop Over
O uso da palavra-chave else
não está limitado ao loop for
e pode ser usado com o loop while
também em Python.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn