2
respostas

Entendendo o uso do break

def titulo():
    print('''
██████╗░██████╗░░█████╗░░█████╗░██╗░░░██╗██████╗░░█████╗░███╗░░██╗██████╗░░█████╗░
██╔══██╗██╔══██╗██╔══██╗██╔══██╗██║░░░██║██╔══██╗██╔══██╗████╗░██║██╔══██╗██╔══██╗
██████╔╝██████╔╝██║░░██║██║░░╚═╝██║░░░██║██████╔╝███████║██╔██╗██║██║░░██║██║░░██║
██╔═══╝░██╔══██╗██║░░██║██║░░██╗██║░░░██║██╔══██╗██╔══██║██║╚████║██║░░██║██║░░██║
██║░░░░░██║░░██║╚█████╔╝╚█████╔╝╚██████╔╝██║░░██║██║░░██║██║░╚███║██████╔╝╚█████╔╝
╚═╝░░░░░╚═╝░░╚═╝░╚════╝░░╚════╝░░╚═════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░╚══╝╚═════╝░░╚════╝░

██╗░░░░░██╗██╗░░░██╗██████╗░░█████╗░░██████╗
██║░░░░░██║██║░░░██║██╔══██╗██╔══██╗██╔════╝
██║░░░░░██║╚██╗░██╔╝██████╔╝██║░░██║╚█████╗░
██║░░░░░██║░╚████╔╝░██╔══██╗██║░░██║░╚═══██╗
███████╗██║░░╚██╔╝░░██║░░██║╚█████╔╝██████╔╝
╚══════╝╚═╝░░░╚═╝░░░╚═╝░░╚═╝░╚════╝░╚═════╝░''')
    
def cadastro_livros():
    livros = []
    while True:
        nome_livro = input('Digite o nome do livro: ').strip()
        print()
        livros.append(nome_livro)
        while True:
            opcao = input('Quer continuar? [S/N]').strip().upper()
            print()
            if opcao in ['N', 'S']:
                break
            print('Digite S ou N.')
        if opcao == 'N':
            break
    return livros

def procurar_livro(lista):
    titulo_livro = input('Digite o livro que quer encontrar: ').strip()
    for livro in lista:
        if livro.lower() == titulo_livro.lower():
            print(f'Livro encontrado: {livro}\n')
            break
    else:
        print('Livro não encontrado.\n')


def main():
    titulo()
    lista = cadastro_livros()
    procurar_livro(lista)

if __name__ == '__main__':
    main()
2 respostas

Oi, Giovanni! Como vai?

Trabalhar com estruturas de controle como o break dentro de laços while True é um passo muito importante no aprendizado de Python, e você demonstrou isso muito bem nas funções cadastro_livros e procurar_livro.

Perceba que o while True combinado com o break permite que o programa continue pedindo entradas ao usuário até que uma condição seja satisfeita. Isso acontece, por exemplo, quando a variável opcao recebe os valores S ou N após o input com a mensagem "Quer continuar?". Esse padrão é bastante utilizado em Python e você aplicou de forma muito clara e organizada.

Outro ponto que merece destaque é o uso do .strip() nos campos de input, tanto em nome_livro quanto em titulo_livro. Esse método garante que espaços acidentais digitados pelo usuário não causem erros nas comparações feitas dentro da lista de livros. É um cuidado simples, mas que faz muita diferença na robustez do programa.

Também ficou muito interessante o uso do for com else na função procurar_livro. Essa combinação oferece uma solução prática e elegante para identificar quando o titulo_livro buscado não foi encontrado na lista, sem a necessidade de variáveis auxiliares de controle.

A função titulo() com o uso de print para exibir a arte em texto também é um toque criativo que enriquece a experiência do usuário no cadastro_livros.

Uma dica para o futuro é utilizar o método enumerate() para listar os livros com numeração automática ao exibir a lista com print. Veja este exemplo:


livros = ['Python', 'Java', 'C++']

for indice, livro in enumerate(livros, start=1):
print(f'{indice} - {livro}')

Neste código, o enumerate() adiciona um número para cada item da lista, facilitando a exibição organizada dos livros cadastrados e tornando o programa ainda mais amigável para quem o utiliza.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
Conteúdos relacionados
Ordenando listas no Python
Estrutura de dados: Pilhas, filas e listas com Python

Obrigado pelo feedback e pela dica extra!