Instrução for else do Python

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) para False. Se o nome de entrada corresponder a uma pessoa na lista, defina seu valor como True, mostre as informações da pessoa e saia do loop usando a instrução break.
  • 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ção break ou se o objeto iterável não tiver nenhum item.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *