2
respostas

Sistema de pesquisa dentro da playlist

Para fazer esse sistema, tive a ideia de fazer o seguinte:

pesquisar = input("O que você procura? ")
if pesquisar in feriado:        (também tentei usar if pesquisar == feriado)
    print ("Temos esse filme/série")
else:
    print ("Não encontrei esse filme/série na playlist feriado")

Mas só sai o resultado "Não encontrei esse filme/série na playlist feriado", e não tenho nenhuma ideia pra resolver o problema... O que posso fazer? (OBS: o resto do código está funcionando perfeitamente)

2 respostas

Oii Matheus, como você está?

Isso está acontecendo porque o que possuímos é uma lista de objetos, então a comparação quando utilizamos o operador == ou o operador in não funciona da mesma forma que fazemos com strings, pois são tipos diferentes.

Algo que podemos fazer é gerar todos os títulos da lista de filmes ou séries e após isso, verificar se o título pesquisado existe nessa nova lista que só possui os títulos. Veja:

listinha = [atlanta, vingadores, demolidor, tmep]

nomes_no_catalogo = [item.nome for item in listinha]

pesquisar = input("O que você procura? ")
if pesquisar in nomes_no_catalogo: 
    print ("Temos esse filme/série")
else:
    print ("Não encontrei esse filme/série na playlist feriado")

Observe que a variável nomes_no_catalogo é uma list comprehension que percorre toda a lista de filmes (listinha) e salva apenas o nome daquele filme ou série (item.nome).

Feito isso, teremos na variável nomes_no_catalogo apenas os títulos dos filmes ou séries. E a partir disso poderemos efetuar a busca.

Vale lembrar que na pesquisa temos que utilizar as primeiras letras dos títulos em maiúsculo, isso porque é utilizado o método title() na inicialização do atributo nome na classe Programa.

Abaixo, uma imagem com o resultado:

Resultado da execução do código

Qualquer dúvida estou por aqui, tá bom?

Grande abraço!

Consegui fazer muito obrigado! Mas ainda tenho uma dúvida... Nessa parte do código:

nomes_no_catalogo = [item.nome for item in listinha]

Por que precisa colocar item.nome antes? Porque se não eu poderia colocar só vingadores por exemplo (não Vingadores - Guerra Infinita). Ou também, por que não podemos simplesmente colocar:

nomes_no_catalogo = [for item in listinha]

?