Resumo : neste tutorial, você aprenderá sobre a while else
instrução Python e como usá-la de forma eficaz.
Introdução ao Python instrução while else
Em Python, a while
instrução pode ter uma else
cláusula opcional:
while condition:
# code block to run
else:
# else clause code block
Linguagem de código: PHP ( php )
Nesta sintaxe, o condition
é verificado no início de cada iteração. O bloco de código dentro da while
instrução será executado enquanto condition
for True
.
Quando o condition
torna-se False
e o loop for executado normalmente, a else
cláusula será executada. No entanto, se o loop for encerrado prematuramente por uma instrução break
ou return
, a else
cláusula não será executada.
O fluxograma a seguir ilustra a while...else
cláusula:
Se você estiver familiarizado com outras linguagens de programação, como JavaScript , Java ou C#, descobrirá que a else
cláusula é bastante estranha no contexto de um loop.
No entanto, a while else
cláusula acaba por ser muito útil em alguns casos. Vamos dar uma olhada em um exemplo de uso da while else
instrução.
Exemplo de instrução while else em Python
Suponha que temos a seguinte lista de frutas onde cada fruta é um dicionário que consiste no fruit
nome e qty
nas chaves:
basket = [
{'fruit': 'apple', 'qty': 20},
{'fruit': 'banana', 'qty': 30},
{'fruit': 'orange', 'qty': 10}
]
Linguagem de código: JavaScript ( javascript )
Queremos fazer um programa que permita aos usuários inserir o nome de uma fruta. Com base no nome da entrada, iremos procurá-la na basket
lista e mostrar sua quantidade se a fruta estiver na lista.
Caso a fruta não seja encontrada, permitiremos que o usuário insira a quantidade dessa fruta e adicione-a à lista.
O seguinte programa é a primeira tentativa:
basket = [
{'fruit': 'apple', 'qty': 20},
{'fruit': 'banana', 'qty': 30},
{'fruit': 'orange', 'qty': 10}
]
fruit = input('Enter a fruit:')
index = 0
found_it = False
while index < len(basket):
item = basket[index]
# check the fruit name
if item['fruit'] == fruit:
found_it = True
print(f"The basket has {item['qty']} {item['fruit']}(s)")
break
index += 1
if not found_it:
qty = int(input(f'Enter the qty for {fruit}:'))
basket.append({'fruit': fruit, 'qty': qty})
print(basket)
Linguagem de código: PHP ( php )
Observe que há uma maneira melhor de desenvolver este programa. O programa neste exemplo é apenas para fins de demonstração.
Como funciona:
- Primeiro, solicite uma entrada do usuário usando a
input()
função. - Em segundo lugar, inicialize como
index
zero efound_it
sinalize paraFalse
. Oindex
será usado para acessar a lista por índice. E afound_it
bandeira será definidaTrue
se o nome da fruta for encontrado. - Terceiro, repita a lista e verifique se o nome da fruta corresponde ao nome de entrada. Se sim, defina o
found_it
sinalizador comoTrue
, mostre a quantidade da fruta e saia do loop usando abreak
instrução. - Por fim, verifique o
found_it
sinalizador após o loop e adicione a nova fruta à lista sefound_it
forFalse
.
O seguinte executa o programa quando apple é a entrada:
Enter a fruit:apple
The basket has 20 apple(s)
Linguagem de código: CSS ( css )
E o seguinte executa o programa quando limão é a entrada:
Enter a fruit:lemon
Enter the qty for lemon:15
[{'fruit': 'apple', 'qty': 20}, {'fruit': 'banana', 'qty': 30}, {'fruit': 'orange', 'qty': 10}, {'fruit': 'lemon', 'qty': 15}]
Linguagem de código: CSS ( css )
O programa funciona conforme o esperado.
No entanto, será mais conciso se você usar a while else
declaração.
O seguinte mostra a nova versão do programa que usa a while else
instrução:
basket = [
{'fruit': 'apple', 'qty': 20},
{'fruit': 'banana', 'qty': 30},
{'fruit': 'orange', 'qty': 10}
]
fruit = input('Enter a fruit:')
index = 0
while index < len(basket):
item = basket[index]
# check the fruit name
if item['fruit'] == fruit:
print(f"The basket has {item['qty']} {item['fruit']}(s)")
found_it = True
break
index += 1
else:
qty = int(input(f'Enter the qty for {fruit}:'))
basket.append({'fruit': fruit, 'qty': qty})
print(basket)
Linguagem de código: PHP ( php )
Neste programa, a else
cláusula substitui a necessidade de ter o found_it
flag e a if
instrução após o loop.
Caso a fruta não seja encontrada, o while
loop será encerrado normalmente e a else
cláusula será executada para adicionar uma nova fruta à lista.
No entanto, se a fruta for encontrada, o while
loop será encontrado na break
instrução e encerrado prematuramente. Neste caso, a else
cláusula não será executada.
Resumo
- A
else
cláusula nawhile else
instrução será executada quando ocondition
loopwhile
for executadoFalse
e o loop for executado normalmente sem encontrar a instruçãobreak
oureturn
. - Experimente a instrução Python
while else
sempre que precisar de um sinalizador em umwhile
loop.