1
resposta

[Solução] Entendendo o uso do break

def buscar_livro(nome_livro: str, lista_livros: list[str]) -> bool:
    """
    Procura um livro em uma lista, eliminando a sensibilidade a maiúsculas/minúsculas, 
    removendo espaços laterais do nome buscado e validando listas vazias.

    Args:
        nome_livro: str - O nome do livro a ser procurado.
        lista_livros: list[str] - Uma lista de strings contendo os nomes dos livros.

    Returns:
        True se o livro for encontrado na lista, False caso contrário.
    """
    if not nome_livro:
        return False
    if not lista_livros:
        return False

    nome_livro = nome_livro.strip().lower()

    for livro in lista_livros:
        if livro.strip().lower() == nome_livro:
            return True
    
    return False

def main() -> None:
    separador: str = '\n-----------------------------------\n'
    nome_livro: str = 'O Hobbit'
    nome_livro_normalizado: str = nome_livro.strip().lower()
    livros: list[str] = ["1984", "Dom Casmurro", "O Pequeno Príncipe", "O Hobbit", "Orgulho e Preconceito"]

    # Nessa primeira abordagem utilizamos o "break" para interromper o laço "for" quando o livro for encontrado na lista.
    # Uma feature do laço "for", no python, é possuir "else", o que não é comum em outras linguagens. Basicamente o bloco
    # "else" do laço "for" é executado caso o laço "for" termine de forma natural, sem que o break o interrompa.
    for livro in livros:
        if livro.strip().lower() == nome_livro_normalizado:
            print(f'Livro encontrado: {nome_livro}')
            break
    else:
        print(f'Livro NÂO encontrado!')

    print(separador)

    # Nessa segunda abordagem utilizamos a função "buscar_livro()" para retornar "True" caso encontre o livro na lista ou
    # "False" caso não encontre. Para isso a função usa a palavra reservada "return", que funciona de forma parecida com o
    # "break". Enquanto o "break" simplesmente para o laço de repetição, o "return" para toda a execução da função e retorna
    # o valor que você especificar a frente dele.
    if buscar_livro(nome_livro, livros):
        print(f'Livro encontrado: {nome_livro}')
    else:
        print(f'Livro NÂO encontrado!')

if __name__ == '__main__':
    main()

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Oi, Mozert! Como vai?

Agradeço por compartilhar.

Gostei muito da forma como você explorou o uso do break e do else nos laços de repetição. Ficou claro como o código demonstra a diferença entre interromper o laço e executar o bloco final apenas quando o laço termina naturalmente.

Continue praticando e experimentando variações, como testar a função com listas diferentes ou nomes que não estejam na lista.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!