Resumo: neste tutorial, você aprenderá sobre a instrução for else
do Python e como usá-la efetivamente.
Introdução à instrução for else do Python
Em Python, a instrução for
pode ter uma cláusula opcional else
, com a qual você pode não estar familiarizado, especialmente se vier de outras linguagens, como Java ou C#.
O seguinte mostra a sintaxe da instrução for
com a cláusula else
:
for item in iterables:
# process item
else:
# statement
Nesta sintaxe, a cláusula else
será executada apenas se o loop for executado normalmente. Em outras palavras, a cláusula else
não será executada se o loop encontrar uma instrução break
.
Além disso, a cláusula else
também é executada quando o objeto iterável não possui nenhum item.
O fluxograma a seguir ilustra a instrução for…else:
A cláusula else
é bastante útil em alguns casos se você souber como aplicá-la de forma eficaz.
Exemplo de uma instrução for else
Suponha que você tenha uma lista de pessoas, onde cada pessoa é um dicionário que consiste em name
e age
assim:
people = [{'name': 'John', 'age': 25},
{'name': 'Jane', 'age': 22},
{'name': 'Peter', 'age': 30},
{'name': 'Jenifer', 'age': 28}]
E você deseja procurar uma pessoa pelo nome.
Se a lista contiver a pessoa, você deseja exibir as informações dessa pessoa. Caso contrário, você deseja mostrar uma mensagem dizendo que o nome não foi encontrado.
Para fazer isso, você pode criar um programa como este:
people = [{'name': 'John', 'age': 25},
{'name': 'Jane', 'age': 22},
{'name': 'Peter', 'age': 30},
{'name': 'Jenifer', 'age': 28}]
name = input('Enter a name:')
found = False
for person in people:
if person['name'] == name:
found = True
print(person)
break
if not found:
print(f'{name} not found!')
Como funciona:
- Primeiro, solicite um nome usando a função
input()
. - Em seguida, defina um sinalizador (
found
) paraFalse
. Se o nome de entrada corresponder a uma pessoa na lista, defina seu valor comoTrue
, mostre as informações da pessoa e saia do loop usando a instruçãobreak
. - Finalmente, verifique o sinalizador
found
e mostre uma mensagem.
O seguinte executa um programa com o nome Peter
e Maria
:
1ª Execução:
Enter a name:Peter
{'name': 'Peter', 'age': 30}
2ª Execução:
Enter a name:Maria
Maria not found!
Ele funciona perfeitamente bem.
No entanto, se você usar a instrução for else
, o programa será muito mais curto.
Veja a seguir a nova versão do programa que usa a instrução for else
:
people = [{'name': 'John', 'age': 25},
{'name': 'Jane', 'age': 22},
{'name': 'Peter', 'age': 30},
{'name': 'Jenifer', 'age': 28}]
name = input('Enter a name:')
for person in people:
if person['name'] == name:
print(person)
break
else:
print(f'{name} not found!')
Ao usar a instrução for else
, o programa não precisa usar uma instrução if
com uma flag
após o loop.
Neste novo programa, se o nome de entrada corresponder a uma pessoa na lista, ele mostrará as informações da pessoa e sairá do loop usando a instrução break
.
Quando o loop encontra a instrução break
, a cláusula else
não será executada.
Resumo
- Use a instrução Python
for else
para executar um bloco de código se o loop não encontrar uma instruçãobreak
ou se o objeto iterável não tiver nenhum item.