Laços For
Bem-vindo à seção dedicada a loops!
Neste capítulo, exploraremos como os loops são uma ferramenta fundamental para automatizar tarefas repetitivas e são essenciais para lidar de forma eficiente com listas e outros tipos de dados iteráveis.
Acompanhe Alex enquanto ele demonstra o uso de laços for
para simplificar operações em nossa mercearia:
O uso de laços for
em Python permite executar um bloco de código repetidamente para cada item em uma coleção (objeto iterável). Veja o que é importante saber sobre laços for
:
Sintaxe
Inicie um laço for
com a palavra-chave for
, seguida de um nome de variável como item
para representar cada elemento na sequência. Em seguida, utilize a palavra-chave in
e o objeto iterável, como groceryItems
. O bloco de código dentro do laço é executado uma vez para cada elemento.
Neste exemplo, item
atua como a variável iteradora que acessa sequencialmente cada elemento da lista groceryItems
e executa a função print()
para cada um deles:
groceryItems = ["milk", "eggs", "cheese", "butter"] for item in groceryItems: # Code to be executed print(item)
Iteração refere-se ao processo de executar um bloco de código repetidamente. Python oferece dois principais tipos de iteração:
Iteração Definida
Quando o número de iterações é conhecido antecipadamente. Os laços for
são um exemplo clássico, parando automaticamente quando atingem o final da sequência.
Iteração Indefinida
Na qual a execução continua até que uma condição específica seja atendida, normalmente controlada por laços while
, que serão explorados em detalhes no próximo capítulo.
Exemplos de Aplicação
Os laços for
em Python podem ser utilizados com qualquer objeto iterável (lists
, tuples
, dictionaries
, strings
), permitindo a manipulação de dados elemento por elemento.
Seja para acessar itens em uma lista, chaves ou valores em um dicionário, ou caracteres em uma string, os laços for
oferecem uma sintaxe clara que simplifica o código para tarefas repetitivas.
Veja como utilizar um laço for
para iterar sobre os elementos de uma string e de uma tupla, de forma semelhante ao que foi visto com listas:
# Print each letter in the string vegetable = "Carrot" for letter in vegetable: print(letter) # Tuple containing different categories of the grocery store categories = ("Produce", "Bakery", "Meat", "Dairy") for category in categories: print(category)
Ao utilizar um laço for
com um dicionário, iterar diretamente sobre o dicionário fará o laço percorrer suas chaves por padrão.
Veja o que acontece ao iterar diretamente sobre um dicionário:
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print each dictionary key print("Product list:") for product in productStock: print(product)
Observe que a variável iteradora product
acessa apenas as chaves do dicionário.
Para iterar sobre os valores de um dicionário, utilize o método values()
.
Este método é útil para operações que exigem acesso apenas aos valores, sem a necessidade de referenciar as chaves:
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print each dictionary value print("Stock counts:") for stock in productStock.values(): print(stock)
Se for necessário acessar chaves e valores simultaneamente, o método items()
permite percorrer pares de chave-valor em um dicionário.
Para utilizar este método em um laço for
, especifique duas variáveis antes da palavra-chave in
— uma para a chave (product
) e outra para o valor (stock
):
# Dictionary of products and their stock counts productStock = {"milk": 120, "eggs": 200, "bread": 80} # Print both the key and value for each dictionary item print("Inventory details:") for product, stock in productStock.items(): print(f"{product} has {stock} units in stock.")
Nota
Neste exemplo, utilizamos f-strings (também conhecidas como literais de string formatadas) para inserir variáveis diretamente em strings. A sintaxe é simples: adicione um
f
antes da aspa de abertura"
e coloque variáveis ou expressões entre chaves{}
dentro da string. Esse método torna a combinação de strings e variáveis em instruções print muito mais legível, portanto, vale a pena aprender.
Com base no seu conhecimento de if/else
, operadores booleanos e laços for
, é possível realizar uma verificação simples de inventário em um dicionário:
# Product names as keys and their stock levels as values inventory = { "milk": 120, "eggs": 30, "bread": 80, "apples": 10 } # The threshold stock level that triggers a restock minimum_stock = 50 # Evaluating stock levels and deciding if restocking is necessary print("Checking inventory status:") for product, quantity in inventory.items(): if quantity < minimum_stock: print(f"{product} requires restocking. Only {quantity} units remain.") else: print(f"{product} has adequate stock with {quantity} units available.")
Nota
Você pode perceber que colocamos instruções
if
dentro do laçofor
, o que adicionou indentação extra ao blocoif
. Como mencionado anteriormente, cada bloco de código indentado pode ser tratado de forma independente, independentemente de onde esteja posicionado. O principal é garantir que a indentação seja consistente e correta entre eles.
Swipe to start coding
Gerencie o estoque e as promoções em um supermercado percorrendo o inventário, verificando condições de reposição e aplicando promoções.
- Percorra cada produto no dicionário
inventory
. - Dentro do loop, obtenha o
current_stock
e omin_stock
da lista de inventário. - Utilize uma declaração
if
para verificar se o estoque atual é menor ou igual ao estoque mínimo:- Se for o caso, exiba uma mensagem de reposição, aumente o estoque em
20
, atualize o inventário e exiba a mensagem de atualização.
- Se for o caso, exiba uma mensagem de reposição, aumente o estoque em
- Utilize outra declaração
if
para verificar se o produto existe no dicionáriopromotions
.
Requisitos de Saída
Para cada item, exiba:
-
--- Processing: <item> ---
-
Se for necessário repor o estoque:
<item> needs restocking. Current stock: <current_stock>. Minimum required: <min_stock>
Updated stock for <item>: <updated_stock>
-
Se houver promoção:
Promotion for <item>: <promotion_details>
-
Caso contrário:
No promotions for <item>
Solução
Obrigado pelo seu feedback!