1
resposta

Desafio: entendendo_uso_break

def entendendo_uso_break():
    livros = ["1984", "Dom Casmurro", "O Pequeno Príncipe", "O Hobbit", "Orgulho e Preconceito"]

    while True:
        livro_procurado = input("Digite o nome do livro: ")
        encontrado = False

        for livro in livros:
            if livro_procurado.lower() == livro.lower():
                print(f'Livro encontrado: {livro}')
                encontrado = True
                break

        if not encontrado:
            print('Livro não encontrado!')


entendendo_uso_break()
1 resposta

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!