2
respostas

Utilidade do continue em laços

Olá pessoal,

Segue resultado referente ao exercício:
Ana está implementando um sistema de filtragem de livros no Buscante. A funcionalidade deve percorrer uma lista de livros e exibir o nome de cada livro disponível em estoque. No entanto, se o livro estiver esgotado, ele deve ser ignorado durante a iteração.
Crie um programa que ajude Ana a exibir somente os livros que possuem estoque disponível, no formato: "Livro disponível: ".

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Obrigada!

2 respostas

Olá, Vanessa. Como vai?

Parabéns por mais uma resolução impecável! O seu código resolveu perfeitamente o problema da Ana utilizando uma estrutura de lista de dicionários, o que é um excelente padrão para representar registros de bancos de dados em Python.

A sua lógica condicional isolou com precisão apenas os livros que possuíam a chave "estoque" maior que zero.

Como o título da sua atividade é "Utilidade do continue em laços", vale muito a pena complementar o seu post no fórum mostrando para a comunidade como esse mesmo código pode ser reescrito utilizando o comando continue.


O Papel do continue no Fluxo do Código

Diferente do break (que aborta o laço por completo), o comando continue serve para interromper apenas a iteração atual, fazendo o Python ignorar tudo o que estiver abaixo dele dentro do bloco e pular imediatamente para o próximo item da lista.

Em termos de lógica de programação, nós o usamos para aplicar o conceito de Cláusula de Guarda (Guard Clauses), onde primeiro nós testamos o cenário que queremos descartar (o livro estar esgotado) para só depois executar a ação principal.

Veja como o seu código ficaria estruturado utilizando essa 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:
    # Cláusula de guarda: Se NÃO houver estoque, pula para o próximo livro
    if livro["estoque"] == 0:
        continue
        
    # Esta linha só é executada se o livro passou no teste acima
    print(f"Livro em estoque: {livro['nome']}")

Por que aprender essa alternativa?

Ambas as formas chegam ao mesmíssimo resultado que você exibiu na imagem. A grande vantagem de adotar o padrão com o continue em sistemas maiores é o ganho em legibilidade e a redução do alinhamento de blocos (nested blocks).

Em códigos complexos com muitas validações, se usarmos apenas if sobre if, o código vai se deslocando muito para a direita devido à indentação. Com o continue, limpamos as exceções logo no topo do laço e mantemos o fluxo principal do programa alinhado à esquerda, deixando a leitura muito mais fluida para outros desenvolvedores.

Muito obrigado por compartilhar mais uma atividade prática com tanta qualidade no nosso fórum!

Espero que possa ter lhe ajudado!

Obrigada pelo feedback Evandro.

Já anotei !