1
resposta

[Projeto] Utilidade do continue em laços

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:
        continue
    else:
      print(f'Livro disponível: {livro["nome"]}')
1 resposta

Olá, Marcelo. Como vai?

Excelente escolha de exemplo para ilustrar a utilidade do comando continue! O cenário de controle de estoque em um e-commerce ou biblioteca é um clássico da programação que traduz perfeitamente a teoria para a prática do mercado.

Gostaria de destacar os pontos fortes da sua lógica e trazer uma dica de ouro sobre legibilidade de código quando utilizamos o continue:

1. O papel do continue como Filtro de Fluxo
Seu raciocínio foi impecável. O objetivo do continue é interromper a iteração atual do laço e saltar imediatamente para a próxima, sem executar o restante das linhas abaixo dele. No seu código, assim que o Python encontra um livro com estoque == 0, ele "ignora" aquele livro e passa para o próximo da lista. Isso é excelente para evitar processamentos desnecessários.

2. Dica de Clean Code: Eliminando o else redundante
Uma das maiores vantagens estéticas e de legibilidade do continue é que ele nos permite eliminar a necessidade de usar o bloco else.

Como o continue funciona como uma "barreira" que desvia o fluxo do código caso a condição do if seja verdadeira, qualquer linha de código que estiver escrita abaixo do bloco if só será executada se a condição for falsa. Portanto, o else se torna redundante.

Veja como o seu código pode ser refatorado para ficar ainda mais direto e com menos recuos (indentações):

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:
        continue
    
    # Não precisamos do 'else'. Se o estoque não for 0, o Python chega naturalmente aqui.
    print(f'Livro disponível: {livro["nome"]}')

Essa abordagem de usar o if com o continue logo no início do laço para descartar o que não queremos é conhecida no mercado como Guard Clauses (Cláusulas de Guarda). Ela deixa o código muito mais limpo e fácil de ler, pois evita que fiquemos aninhando vários blocos de if/else uns dentro dos outros.

Seu entendimento sobre o controle de fluxos em laços de repetição está excelente. Parabéns pelo projeto!

Espero que possa ter lhe ajudado!