Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Exercício 7

Boa tarde, no exercicio 7 estou tendo um problema que a resposta está saindo endereço de memória. o que pode estar errado?

Minha classe Livro:

class Livro:
    def __init__(self, titulo, autor, ano_publicacao):
        self.titulo = titulo
        self.autor = autor
        self.ano_publicacao = ano_publicacao
        self.disponivel = True

    def __str__(self):
        return f'Título: {self.titulo} | Autor: {self.autor} | Ano publicação: {self.ano_publicacao}'
    
    def emprestar(self):
        self.disponivel = False

    @staticmethod
    def verificar_disponibilidade(ano):
        livros_disponiveis = [livro for livro in Livro.livros if livro.ano_publicacao == ano and livro.disponivel]
        return livros_disponiveis

no arquivo biblioteca.py:

from exercicios import Livro

livro1 = Livro("Aprendendo Python", "John Doe", 2022)
livro2 = Livro("Data Science Fundamentals", "Jane Smith", 2020)
livro3 = Livro("Python Cookbook", "Samuel Developer", 2019)
Livro.livros = [livro1, livro2, livro3]

ano_especifico = 2022
livros_disponiveis_ano = Livro.verificar_disponibilidade(ano_especifico)
print(f"Livros disponíveis em {ano_especifico}: {livros_disponiveis_ano}")

A resposta no console:

Livros disponíveis em 2022: [<exercicios.Livro object at 0x102af9d90>]

Poderiam me auxiliar onde está errado?

Grato.

2 respostas
solução!

Ali, boa noite, tudo bem?

Eu pesquisei um pouco e entendi que você precisa fazer a função verificar_disponibilidade() retornar uma string e não um object.

Você pode fazer assim:

    @staticmethod
    def verificar_disponibilidade(ano):
        livros_disponiveis = [livro for livro in Livro.livros if livro.ano_publicacao == ano and livro.disponivel]

        # Ajustar a string de saída
        if livros_disponiveis:
            livros_disponiveis_str = ", ".join(livro.__str__() for livro in livros_disponiveis)
        else:
            livros_disponiveis_str = "Nenhum livro disponível"

        return livros_disponiveis_str

Deve ter outras maneiras de fazer isso...

Abraços!

entendi Nícolas, obrigado.