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

[Dúvida] Hora da prática - Exercício do Livro

Boa tarde comunidade Alura!

Poderiam me ajudar numa dúvida, por gentileza? Eu estava fazendo o "exercício 4" da aula "Importando classe e composição" e travei na hora de colocar o print que verifica a disponibilidade do livro na hora de executar. Alguém poderia me instruir como fazer isso? Segue o código que eu construi até agora:

Obrigado pela a atenção!

class Livro:

    livros = []

    def __init__(self,titulo,autor,ano_publicacao):
        self._titulo = titulo
        self._autor = autor
        self._ano_publicacao = ano_publicacao
        self._status = True
        self._ano = 2020
        Livro.livros.append(self)

    def __str__(self):
        return f'Nome do autor: {self._titulo} - Autor: {self._autor} - Ano de publicação: {self._ano_publicacao}'
    
    def emprestar(self):
        self._status = False

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


livro1 = Livro('O Barco','Davi Ferreira',2024)

print(livro1)

print(f'Antes de emprestar: {livro1._status}')

livro1.emprestar()

print(f'Depois de emprestar: {livro1._status}')
2 respostas
solução!

Para verificar a disponibilidade de um livro e imprimir essa informação, você pode ajustar a função verificar_disponibilidade para retornar uma lista de títulos dos livros disponíveis para o ano especificado. Em seguida, você pode imprimir essa lista.

Aqui está o seu código atualizado com a função verificar_disponibilidade ajustada e o código de impressão:

class Livro:
    livros = []

    def __init__(self, titulo, autor, ano_publicacao):
        self._titulo = titulo
        self._autor = autor
        self._ano_publicacao = ano_publicacao
        self._status = True
        Livro.livros.append(self)

    def __str__(self):
        return f'Nome do livro: {self._titulo} - Autor: {self._autor} - Ano de publicação: {self._ano_publicacao}'
    
    def emprestar(self):
        self._status = False

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

# Criando um livro de exemplo
livro1 = Livro('O Barco', 'Davi Ferreira', 2024)

# Imprimindo informações do livro
print(livro1)

# Verificando status antes de emprestar
print(f'Antes de emprestar: {livro1._status}')

# Emprestando o livro
livro1.emprestar()

# Verificando status depois de emprestar
print(f'Depois de emprestar: {livro1._status}')

# Verificando disponibilidade de livros para o ano 2024
livros_disponiveis = Livro.verificar_disponibilidade(2024)
if livros_disponiveis:
    print(f'Livros disponíveis para o ano 2024:')
    for livro in livros_disponiveis:
        print(f' - {livro._titulo} de {livro._autor}')
else:
    print('Nenhum livro disponível para o ano 2024.')

Boa tarde Istefferson, tudo bem?

Obrigado por responder! Eu testei o código aqui e funcionou perfeitamente.

Agradeço à ajuda com esse problema.