Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Utilidade do continue em laços

Não usei continue nessa abordagem

livros = [
    {"nome": "1984", "estoque": 5},
    {"nome": "Dom Casmurro", "estoque": 0},
    {"nome": "O Pequeno Príncipe", "estoque": 3},
    {"nome": "O Hobbit", "estoque": 0},
    {"nome": "Orgulho e Preconceito", "estoque": 2}
]

for livro in livros:
    if livro["estoque"] > 0:
        print(f"Livro disponível: {livro["nome"]}")
1 resposta

Olá, Paulo. Como vai?

Sua solução utilizando apenas a estrutura condicional if livro["estoque"] > 0: está perfeitamente correta e é super limpa! Para o tamanho atual do seu código, essa abordagem atende muito bem e é bastante legível.

O objetivo dessa atividade é apresentar a instrução continue como uma ferramenta alternativa para o controle de fluxos em laços de repetição. Enquanto o seu código foca em o que processar (se o estoque for maior que zero, imprima), a filosofia do continue foca em o que ignorar (se o estoque for zero, pule para o próximo livro).

Para entender a utilidade prática do continue, veja como o mesmo código ficaria estruturado com ele:

livros = [
    {"nome": "1984", "estoque": 5},
    {"nome": "Dom Casmurro", "estoque": 0},
    {"nome": "O Pequeno Príncipe", "estoque": 3},
    {"nome": "O Hobbit", "estoque": 0},
    {"nome": "Orgulho e Preconceito", "estoque": 2}
]

for livro in livros:
    # Se o livro estiver sem estoque, o 'continue' interrompe a iteração atual 
    # e faz o laço 'for' pular imediatamente para o próximo livro da lista
    if livro["estoque"] == 0:
        continue
        
    print(f"Livro disponível: {livro['nome']}")

Qual é a vantagem real de usar o continue?

Para listas simples como essa, a diferença parece apenas questão de gosto. No entanto, no mercado e em sistemas complexos, o continue é considerado uma excelente prática para evitar o que chamamos de Código Espaguete (ou aninhamento excessivo de blocos if).

Imagine que, além de verificar o estoque, você precisasse fazer mais 5 validações no livro (se o preço está ativo, se a editora é parceira, se a classificação indicativa bate com o usuário, etc.).

  • Sem o continue, seu código ganharia vários if um dentro do outro, empurrando o seu código cada vez mais para a direita (identação profunda).
  • Com o continue, você cria pequenas barreiras de validação no topo do laço. Se o item não passar, ele é descartado na hora. O restante do código principal roda livre, sem precisar estar "preso" dentro de um bloco if.

Parabéns pelo código e por testar a lógica! É ótimo conhecer as duas formas para escolher a melhor de acordo com o tamanho do projeto.

Espero que possa ter lhe ajudado!