Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Laços While | Laços de Repetição
Introdução ao Python

Deslize para mostrar o menu

book
Laços While

Laços while são a principal ferramenta para lidar com iteração indefinida, sendo úteis em cenários onde o número de iterações não é conhecido previamente, como monitorar níveis de estoque até que atinjam um determinado limite.

Veja como Alex demonstra o uso de laços while para lidar com situações dinâmicas:

Um laço while em Python executa continuamente um bloco de código enquanto uma condição especificada permanecer True.

Sintaxe

Para iniciar um laço while, define-se uma variável de controle e, em seguida, utiliza-se a palavra-chave while acompanhada de uma condição booleana. A condição é seguida por dois pontos :, que indicam o início do bloco de código do laço.

O laço será executado repetidamente até que a condição se torne False. Normalmente, a variável de controle é atualizada dentro do laço para eventualmente tornar a condição False e encerrar o laço.

Considere este exemplo de laço while:

1234567891011
# Handling a queue at a grocery store checkout queue_length = 5 # Initial number of people in the queue while queue_length > 0: # Start the `while` loop as long as the queue isn't empty print(f"Current queue size: {queue_length}") # Simulate serving a customer print("Serving the next customer...") # Decrease the queue length by 1 as a customer leaves # The `-=` operator is a shortcut for `queue_length = queue_length - 1` queue_length -= 1
copy

Neste exemplo, queue_length atua como nossa variável de controle, começando em 5. A cada iteração do loop, o valor de queue_length diminui em 1 até atingir 0. Nesse ponto, o loop termina porque a condição 0 > 0 é avaliada como False.

Observação

É fundamental atualizar a variável de controle dentro do loop para eventualmente atingir a condição de parada do loop. Sem isso, o loop será executado ininterruptamente, impedindo a execução de qualquer código subsequente.

Aplicação de Exemplo

Imagine gerenciar o estoque de leite em um supermercado. É necessário garantir que o estoque não fique abaixo de um determinado nível e, quando isso acontecer, deve-se reabastecer para manter o nível adequado.

Um loop while é útil nessa situação porque permite reabastecer o leite em incrementos ao longo de várias iterações até que o estoque atinja o nível desejado. Sem um loop while, seria necessário calcular a quantidade exata de leite a ser reabastecida de uma só vez.

Por exemplo, considere que um funcionário da loja só pode reabastecer uma quantidade fixa de leite por viagem (por exemplo, 20 caixas por reabastecimento). Se o estoque não for totalmente reabastecido, o funcionário retorna ao depósito para trazer outro lote de leite.

123456789101112131415161718
# Initial amount of milk in stock milk_stock = 15 # Minimum stock level before restocking is necessary min_stock = 50 # Quantity a worker can restock at one time restock_quantity = 20 # Start the loop to restock milk until the stock exceeds the minimum required level while milk_stock < min_stock: # If the loop is running, the condition is `True`, indicating we need more milk print(f"Milk stock is low: {milk_stock} units remaining.") # Simulate the process of restocking milk print("Restocking milk...") # Increase the stock by the quantity the worker can bring in one trip milk_stock += restock_quantity # Output the final stock level after restocking is complete print(f"Milk stock updated: {milk_stock} units, which is now sufficient.")
copy

Nota

milk_stock += restock_quantity é equivalente a milk_stock = milk_stock + restock_quantity. Trata-se apenas de uma forma mais concisa e legível de expressar a mesma operação.

O fluxograma acima ilustra a lógica por trás do laço while utilizado para gerenciar o estoque de leite. Observe como a variável de controle milk_stock, iniciando em 15, é incrementada pelo restock_quantity a cada iteração do laço.

O laço continua executando até que milk_stock ultrapasse o limite mínimo min_stock de 50, momento em que é interrompido.

Tarefa

Swipe to start coding

Gerencie o estoque de um supermercado utilizando laços while para garantir que Bread, Eggs e Apples atendam aos seus níveis mínimos de estoque. As quantidades de reposição estão armazenadas em um dicionário.

  • Utilize um laço while para verificar se "Bread" está abaixo do estoque mínimo. Se estiver, aumente o estoque utilizando a quantidade de reposição correspondente do dicionário.
  • Repita a mesma lógica para "Eggs" e "Apples", cada um com seu próprio laço while.
  • Após a reposição, percorra o dicionário inventory utilizando o laço for e exiba os níveis finais de estoque de todos os itens.

Requisitos de Saída

  • Para cada item reabastecido, exiba:
    "<Item> stock is low: <$current_stock> units. Restocking..."
  • Após toda a reposição, exiba Final Inventory after restocking: seguido dos níveis de estoque atualizados:
    "<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
  • Insira uma linha em branco antes do inventário final utilizando \n.
  • Utilize f-strings para formatação e aspas simples dentro de aspas duplas para as chaves do dicionário.

Observação

Para evitar conflitos de sintaxe em f-strings, utilize aspas duplas ao redor da string e aspas simples dentro: f"Bread stock is low: {inventory['Bread'][0]} units."
Utilize \n para iniciar uma nova linha na saída: "First line.\nSecond line."

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 2
Sentimos muito que algo saiu errado. O que aconteceu?

Pergunte à IA

expand
ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

book
Laços While

Laços while são a principal ferramenta para lidar com iteração indefinida, sendo úteis em cenários onde o número de iterações não é conhecido previamente, como monitorar níveis de estoque até que atinjam um determinado limite.

Veja como Alex demonstra o uso de laços while para lidar com situações dinâmicas:

Um laço while em Python executa continuamente um bloco de código enquanto uma condição especificada permanecer True.

Sintaxe

Para iniciar um laço while, define-se uma variável de controle e, em seguida, utiliza-se a palavra-chave while acompanhada de uma condição booleana. A condição é seguida por dois pontos :, que indicam o início do bloco de código do laço.

O laço será executado repetidamente até que a condição se torne False. Normalmente, a variável de controle é atualizada dentro do laço para eventualmente tornar a condição False e encerrar o laço.

Considere este exemplo de laço while:

1234567891011
# Handling a queue at a grocery store checkout queue_length = 5 # Initial number of people in the queue while queue_length > 0: # Start the `while` loop as long as the queue isn't empty print(f"Current queue size: {queue_length}") # Simulate serving a customer print("Serving the next customer...") # Decrease the queue length by 1 as a customer leaves # The `-=` operator is a shortcut for `queue_length = queue_length - 1` queue_length -= 1
copy

Neste exemplo, queue_length atua como nossa variável de controle, começando em 5. A cada iteração do loop, o valor de queue_length diminui em 1 até atingir 0. Nesse ponto, o loop termina porque a condição 0 > 0 é avaliada como False.

Observação

É fundamental atualizar a variável de controle dentro do loop para eventualmente atingir a condição de parada do loop. Sem isso, o loop será executado ininterruptamente, impedindo a execução de qualquer código subsequente.

Aplicação de Exemplo

Imagine gerenciar o estoque de leite em um supermercado. É necessário garantir que o estoque não fique abaixo de um determinado nível e, quando isso acontecer, deve-se reabastecer para manter o nível adequado.

Um loop while é útil nessa situação porque permite reabastecer o leite em incrementos ao longo de várias iterações até que o estoque atinja o nível desejado. Sem um loop while, seria necessário calcular a quantidade exata de leite a ser reabastecida de uma só vez.

Por exemplo, considere que um funcionário da loja só pode reabastecer uma quantidade fixa de leite por viagem (por exemplo, 20 caixas por reabastecimento). Se o estoque não for totalmente reabastecido, o funcionário retorna ao depósito para trazer outro lote de leite.

123456789101112131415161718
# Initial amount of milk in stock milk_stock = 15 # Minimum stock level before restocking is necessary min_stock = 50 # Quantity a worker can restock at one time restock_quantity = 20 # Start the loop to restock milk until the stock exceeds the minimum required level while milk_stock < min_stock: # If the loop is running, the condition is `True`, indicating we need more milk print(f"Milk stock is low: {milk_stock} units remaining.") # Simulate the process of restocking milk print("Restocking milk...") # Increase the stock by the quantity the worker can bring in one trip milk_stock += restock_quantity # Output the final stock level after restocking is complete print(f"Milk stock updated: {milk_stock} units, which is now sufficient.")
copy

Nota

milk_stock += restock_quantity é equivalente a milk_stock = milk_stock + restock_quantity. Trata-se apenas de uma forma mais concisa e legível de expressar a mesma operação.

O fluxograma acima ilustra a lógica por trás do laço while utilizado para gerenciar o estoque de leite. Observe como a variável de controle milk_stock, iniciando em 15, é incrementada pelo restock_quantity a cada iteração do laço.

O laço continua executando até que milk_stock ultrapasse o limite mínimo min_stock de 50, momento em que é interrompido.

Tarefa

Swipe to start coding

Gerencie o estoque de um supermercado utilizando laços while para garantir que Bread, Eggs e Apples atendam aos seus níveis mínimos de estoque. As quantidades de reposição estão armazenadas em um dicionário.

  • Utilize um laço while para verificar se "Bread" está abaixo do estoque mínimo. Se estiver, aumente o estoque utilizando a quantidade de reposição correspondente do dicionário.
  • Repita a mesma lógica para "Eggs" e "Apples", cada um com seu próprio laço while.
  • Após a reposição, percorra o dicionário inventory utilizando o laço for e exiba os níveis finais de estoque de todos os itens.

Requisitos de Saída

  • Para cada item reabastecido, exiba:
    "<Item> stock is low: <$current_stock> units. Restocking..."
  • Após toda a reposição, exiba Final Inventory after restocking: seguido dos níveis de estoque atualizados:
    "<Item>: <$current_stock> units (Minimum required: <$minimum_stock> units)"
  • Insira uma linha em branco antes do inventário final utilizando \n.
  • Utilize f-strings para formatação e aspas simples dentro de aspas duplas para as chaves do dicionário.

Observação

Para evitar conflitos de sintaxe em f-strings, utilize aspas duplas ao redor da string e aspas simples dentro: f"Bread stock is low: {inventory['Bread'][0]} units."
Utilize \n para iniciar uma nova linha na saída: "First line.\nSecond line."

Solução

Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 2
Switch to desktopMude para o desktop para praticar no mundo realContinue de onde você está usando uma das opções abaixo
Sentimos muito que algo saiu errado. O que aconteceu?
some-alt