Olá, Felipe. Como vai?
Excelente iniciativa em compartilhar esse desafio prático! O uso do break é fundamental para otimizar nossos algoritmos, pois ele interrompe a execução de um laço assim que o nosso objetivo é atingido, poupando processamento desnecessário.
No seu código, o break está muito bem posicionado dentro do laço for. Sem ele, mesmo após encontrar o livro na primeira posição da lista, o Python continuaria verificando todos os outros itens até o fim, o que seria ineficiente em listas muito grandes.
Para agregar ainda mais valor ao seu exercício, gostaria de sugerir duas melhorias técnicas e uma curiosidade sobre o Python:
- O loop infinito: Notei que o seu
while True não possui uma condição de saída. Isso significa que o programa nunca para de perguntar. Uma boa prática seria adicionar uma palavra de comando, como "sair", para encerrar o programa utilizando outro break. - Tratamento de espaços: Além do
.lower(), é interessante usar o método .strip() para remover espaços em branco acidentais que o usuário possa digitar antes ou depois do nome do livro.
Veja como o código ficaria com essas sugestões:
def entendendo_uso_break():
livros = ["1984", "Dom Casmurro", "O Pequeno Príncipe", "O Hobbit", "Orgulho e Preconceito"]
while True:
# Adicionado o .strip() para limpar espaços extras
livro_procurado = input("Digite o nome do livro (ou 'sair' para encerrar): ").strip()
# Condição para encerrar o loop principal
if livro_procurado.lower() == 'sair':
print("Encerrando o sistema de estoque...")
break
encontrado = False
for livro in livros:
if livro_procurado.lower() == livro.lower():
print(f'Livro encontrado: {livro}')
encontrado = True
break # Interrompe o for, pois já achamos o livro
if not encontrado:
print('Livro não encontrado!')
entendendo_uso_break()
Curiosidade técnica: O Python possui uma estrutura pouco conhecida chamada for...else. Nela, o bloco else só é executado se o laço for chegar ao fim sem ter encontrado nenhum break. No seu caso, você poderia remover a variável encontrado e colocar o print('Livro não encontrado!') diretamente dentro de um else alinhado ao for.
Espero que possa ter lhe ajudado!