Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Exercício N 7

Eu estava fazendo o exercício e fiz tudo correto, mas na hora de rodar apareceu um erro dizendo que o método aceita só um argumento e não dois, sendo que foi passado só 1.

Exercício:

No arquivo biblioteca.py, utilize o método estático verificar_disponibilidade para obter a lista de livros disponíveis publicados em um ano específico.

código:

def verificar_disponibilidade(ano):
        livros_disponiveis = [livro for livro in Livros.ano_publicacao == ano and Livros.disponivel]
        return livros_disponiveis

e

ano =1951

livros_disponiveis = Livros.verificar_disponibilidade(ano)
print(f"Os livros disponíveis do ano {ano} são: {livros_disponiveis}")
1 resposta
solução!

Olá Vitor! Tudo bem?

Pelo que você descreveu, parece que o erro está relacionado à forma como o método verificar_disponibilidade está sendo implementado e utilizado. Vamos dar uma olhada no seu código e ver o que pode estar causando o problema.

No seu método verificar_disponibilidade, a lógica de filtragem dos livros parece estar incorreta. Além disso, o método precisa ser um método estático, o que significa que ele não deve depender de uma instância específica da classe. Vou sugerir algumas correções:

  1. Defina o método como estático: Para isso, você deve usar o decorador @staticmethod antes do método. Isso é importante porque métodos estáticos não recebem o parâmetro self por padrão.

  2. Corrija a lógica de filtragem: Parece que a lógica para filtrar os livros disponíveis está um pouco confusa. Você deve iterar sobre uma lista de instâncias da classe Livro e verificar se o ano de publicação e a disponibilidade coincidem.

Aqui está um exemplo de como você pode ajustar o método:

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

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

E no seu arquivo biblioteca.py, você deve passar a lista de livros para o método:

# Supondo que você tenha uma lista de instâncias de Livro
livros = [
    Livro("Livro 1", "Autor 1", 1951),
    Livro("Livro 2", "Autor 2", 1951),
    Livro("Livro 3", "Autor 3", 1952)
]

# Emprestando um livro para testar
livros[0].emprestar()

ano = 1951
livros_disponiveis = Livro.verificar_disponibilidade(livros, ano)
print(f"Os livros disponíveis do ano {ano} são: {livros_disponiveis}")

Certifique-se de que você está passando a lista de instâncias de Livro como primeiro argumento para o método verificar_disponibilidade. Isso deve resolver o problema que você está enfrentando.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.