1
resposta

[Projeto] Praticando Python: Strings e Regex: Desafio 13

Desenvolvi esse código um pouco mais elaborado como sugestão de resolução do desafio, para apurar uma lista de livros em uma biblioteca. (o código ficou grande devido a biblioteca exemplo criada)

import re

biblioteca = [
    "4 Horas para o Corpo",
    "Dom Casmurro",
    "Os Três Mosqueteiros",
    "Crime e Castigo",
    "1984",
    "2.001: Uma Odisseia no Espaço",
    "O Nome da Rosa",
    "Jane Eyre",
    "3 Sombras",
    "Noite na Taverna",
    "5 Dias no Umbral",
    "As Aventuras de Sherlock Holmes",
    "1Q84",
    "Coração das Trevas",
    "O Senhor dos Anéis",
    "Jogador Número 1",
    "Grande Sertão: Veredas",
    "O Estrangeiro",
    "Xadrez, de Stefan Zweig",
    "A Revolução dos Bichos",
    "O Conde de Monte Cristo",
    "Orgulho e Preconceito",
    "Lolita",
    "Frankenstein",
    "5 Minutos",
    "Harry Potter e a Pedra Filosofal",
    "A Cor Púrpura",
    "Memórias Póstumas de Brás Cubas",
    "Drácula",
    "Fahrenheit 451",
    "Cem Anos de Solidão",
    "A Divina Comédia",
    "Zorba, o Grego",
    "2 Irmãos",
    "1 Página de Cada Vez",
    "Ulysses",
    "Romeu e Julieta",
    "Laranja Mecânica",
    "Inferno",
    "Wuthering Heights",
    "Admirável Mundo Novo",
    "E o Vento Levou",
    "Ilíada",
    "Kafka à Beira-Mar",
    "História da Riqueza do Homem",
    "Percy Jackson e o Ladrão de Raios",
    "3 Desejos",
    "Ensaio Sobre a Cegueira",
    "Guerra e Paz",
    "Os Miseráveis",
    "10 Negrinhos",
    "Quincas Borba",
    "7 Habits of Highly Effective People",
    "A Metamorfose",
    "4 Estações",
    "Vidas Secas",
    "Y: O Último Homem",
    "O Hobbit",
    "O Apanhador no Campo de Centeio"
]
 
alfanumerico = input('Informe um alfanumérico para pesquisa: ')

while len(alfanumerico) > 1 or re.match(r'^\s+',alfanumerico):
    print('Pesquisa inválida! Por favor, informe apenas um alfanumérico.')
    alfanumerico = input('Informe um alfanumérico para pesquisa: ')

verificacao_regex = rf'^{alfanumerico}'

resultado = [livro for livro in biblioteca if re.search(verificacao_regex, livro, re.IGNORECASE)]

if resultado:
    print(f'Lista de livros disponíveis com iniciais com o alfanumérico {alfanumerico}:')
    resultado_ordem = sorted(resultado)
    print(resultado_ordem)
else:
    print(f'Não foi encontrado livros com o alfanumérico: {alfanumerico}')

Aceito sugestões e avaliações xD

1 resposta

Olá, Vinicius. Tudo bem?

Muito obrigado por compartilhar o seu código aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Muito bom como você estruturou a busca com Regex e aplicou a validação da entrada para garantir que apenas um caractere seja aceito. Isso torna a pesquisa mais precisa e evita entradas inválidas.

Para melhorar ainda mais, você pode usar startswith ao invés de re.search(), já que a busca é pelo início do título. Isso torna a execução mais rápida, pois evita o processamento extra da expressão regular:


resultado = [livro for livro in biblioteca if livro.lower().startswith(alfanumerico.lower())]

Isso melhora a performance ao evitar a sobrecarga do Regex.

Conte com o apoio do Fórum. Abraços e bons estudos.