livros = ["1984", "Dom Casmurro", "O Pequeno Príncipe", "O Hobbit", "Orgulho e Preconceito"]
for livro in livros:
if livro.strip() == "O Hobbit":
print("Livro encontrado:", livro)
break #ao encontar pare e saia do loop
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!
livros = ["1984", "Dom Casmurro", "O Pequeno Príncipe", "O Hobbit", "Orgulho e Preconceito"]
for livro in livros:
if livro.strip() == "O Hobbit":
print("Livro encontrado:", livro)
break #ao encontar pare e saia do loop
Olá, Marcelo. Como vai?
O seu código ficou excelente! Você aplicou a instrução break de forma perfeita e no cenário ideal. Em termos de algoritmo e eficiência de software, esse é o clássico exemplo de busca linear otimizada.
Gostaria de destacar um detalhe muito caprichoso na sua solução: o uso do método .strip() na linha if livro.strip() == "O Hobbit":. Essa é uma excelente prática de programação defensiva. Em aplicações reais, dados vindos de bancos de dados ou de digitação de usuários podem conter espaços em branco acidentais no início ou no fim (como "O Hobbit " ou " O Hobbit"). O .strip() remove esses espaços e garante que a comparação não falhe por um detalhe bobo, tornando seu código muito mais robusto.
break é uma excelente prática aqui?Para entender o valor do seu break, imagine que a sua lista de livros não tivesse apenas 5 itens, mas sim 1.000.000 de livros cadastrados em uma biblioteca digital, e o livro procurado estivesse logo na posição de número 4.
break: O Python encontraria "O Hobbit" na quarta rodada, imprimiria a mensagem na tela, mas continuaria rodando o laço por mais 999.996 vezes inutilmente, gastando processamento e memória do servidor.break: Assim que a condição é atendida, o laço é interrompido imediatamente e o programa segue para as próximas linhas fora do bloco for. Você economiza recursos da máquina e entrega uma resposta mais rápida.for/else no PythonUma curiosidade fantástica sobre o Python (que poucas linguagens possuem) é que a estrutura for aceita um bloco else.
Quando colocamos um else alinhado ao for, o código dentro dele **só é executado se o laço terminar de rodar a lista inteira sem ter encontrado nenhum break**. Isso é perfeito para avisar ao usuário caso o livro não esteja no catálogo!
Veja que evolução elegante para o seu algoritmo:
livros = ["1984", "Dom Casmurro", "O Pequeno Príncipe", "O Hobbit", "Orgulho e Preconceito"]
for livro in livros:
if livro.strip() == "O Hobbit":
print("Livro encontrado:", livro)
break # Se encontrar, interrompe o loop e ignora o 'else' abaixo
else:
# Este bloco só roda se o loop varrer a lista inteira e o break nunca for acionado
print("Desculpe, o livro procurado não está disponível no estoque.")
Parabéns pela estrutura limpa do código e pela excelente explicação no comentário! Compartilhar essas soluções práticas ajuda muito quem está consolidando a lógica de controle de fluxos no fórum.
Espero que possa ter lhe ajudado!
Exatamente essa parte dos laço para grandes quantidades é examente o que pensei, mas o mesmo ali se fosse o caso de uma lista grande seria uma busca binária.