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