Python enquanto mais

Resumo : neste tutorial, você aprenderá sobre a while elseinstrução Python e como usá-la de forma eficaz.

Introdução ao Python instrução while else

Em Python, a whileinstrução pode ter uma elsecláusula opcional:

while condition:
    # code block to run
else:
    # else clause code blockLinguagem de código:  PHP  ( php )

Nesta sintaxe, o conditioné verificado no início de cada iteração. O bloco de código dentro da whileinstrução será executado enquanto conditionfor True.

Quando o conditiontorna-se Falsee o loop for executado normalmente, a elsecláusula será executada. No entanto, se o loop for encerrado prematuramente por uma instrução breakou return, a elsecláusula não será executada.

O fluxograma a seguir ilustra a while...elsecláusula:

Se você estiver familiarizado com outras linguagens de programação, como JavaScript , Java ou C#, descobrirá que a elsecláusula é bastante estranha no contexto de um loop.

No entanto, a while elsecláusula acaba por ser muito útil em alguns casos. Vamos dar uma olhada em um exemplo de uso da while elseinstruçã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 fruitnome e qtynas 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 basketlista 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 indexzero e found_itsinalize para False. O indexserá usado para acessar a lista por índice. E a found_itbandeira será definida Truese 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_itsinalizador como True, mostre a quantidade da fruta e saia do loop usando a breakinstrução.
  • Por fim, verifique o found_itsinalizador após o loop e adicione a nova fruta à lista se found_itfor False.

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 elsedeclaração.

O seguinte mostra a nova versão do programa que usa a while elseinstruçã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 elsecláusula substitui a necessidade de ter o found_itflag e a ifinstrução após o loop.

Caso a fruta não seja encontrada, o whileloop será encerrado normalmente e a elsecláusula será executada para adicionar uma nova fruta à lista.

No entanto, se a fruta for encontrada, o whileloop será encontrado na breakinstrução e encerrado prematuramente. Neste caso, a elsecláusula não será executada.

Resumo

  • A elsecláusula na while elseinstrução será executada quando o conditionloop whilefor executado Falsee o loop for executado normalmente sem encontrar a instrução breakou return.
  • Experimente a instrução Python while elsesempre que precisar de um sinalizador em um whileloop.

Deixe um comentário

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