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

Exercícios feitos:

# Exercícios
#1 Crie uma classe chamada Livro com um construtor que aceita os parâmetros titulo, autor e ano_publicacao. Inicie um atributo chamado disponivel como True por padrão.
class Livro:
    def __init__(self, titulo, autor, ano_publicacao):
        self.titulo = titulo
        self.autor = autor
        self.ano_publicacao = ano_publicacao
        self.disponivel = True

#2 Na classe Livro, adicione um método especial str que retorna uma mensagem formatada com o título, autor e ano de publicação do livro. Crie duas instâncias da classe Livro e imprima essas instâncias.

    def __str__(self):
        return f'Título: {self.titulo} \nAutor: {self.autor} \nAno: {self.ano_publicacao}'
    

livro_1 = Livro('Os Miseráveis','Victor Hugo', 1770)
livro_2 = Livro('A volta ao mundo em oitenta dias', 'Julio Verne', 1900)

print(livro_1)
print(livro_2)

#3 Adicione um método de instância chamado emprestar à classe Livro que define o atributo disponivel como False. Crie uma instância da classe, chame o método emprestar e imprima se o livro está disponível ou não.

    def emprestar(self):
        self.disponivel =  False

livro_3 = Livro('Admirável mundo novo','Aldo Huxley', 1932)
print(f'O livro {livro_3.titulo} está disponível: {livro_3.disponivel}')
livro_3.emprestar()
print(f'O livro {livro_3.titulo} está disponível: {livro_3.disponivel}')


#4 Adicione um método estático chamado verificar_disponibilidade à classe Livro que recebe um ano como parâmetro e retorna uma lista dos livros disponíveis publicados nesse ano.
    @staticmethod
    def verificar_disponibilidade(ano):
        livros_disponiveis = [livro for livro in Livro.livros if livro.ano_publicacao == ano and livro.disponivel]
        return livros_disponiveis

livro_1 = Livro('Os Miseráveis','Victor Hugo', 1770)
livro_2 = Livro('A volta ao mundo em oitenta dias', 'Julio Verne', 1900)
livro_3 = Livro('Admirável mundo novo','Aldo Huxley', 1932)

Livro.livros = [livro_1, livro_2, livro_3]
Livro.verificar_disponibilidade(1770)


#5 Crie um arquivo chamado biblioteca.py e importe a classe Livro neste arquivo.

from modelos.biblioteca import Livros # from diretorio.arquivo(sem extensao) import classe


def main():
    pass

if __name__ == '__main__':
    main()




#6 No arquivo biblioteca.py, empreste o livro chamando o método emprestar e imprima se o livro está disponível ou não após o empréstimo.

from modelos.biblioteca import Livros # from diretorio.arquivo(sem extensao) import classe

def main():
    pass

if __name__ == '__main__':
    main()

livro_biblioteca = Livro("O homem que calculava", "Malba Tahan", 2001)
print(f"Antes de emprestar: Livro disponível? {livro_biblioteca.disponivel}")
livro_biblioteca.emprestar()
print(f"Depois de emprestar: Livro disponível? {livro_biblioteca.disponivel}")




#7 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.

livro_biblioteca.verificar_disponibilidade(2001)

#8 Crie um arquivo chamado main.py, importe a classe Livro e, no arquivo main.py, instancie dois objetos da classe Livro e exiba a mensagem formatada utilizando o método str.

from modelos.biblioteca import Livros # from diretorio.arquivo(sem extensao) import classe

livro_1 = Livro('Os Miseráveis','Victor Hugo', 1770)
livro_2 = Livro('A volta ao mundo em oitenta dias', 'Julio Verne', 1900)
livro_3 = Livro('Admirável mundo novo','Aldo Huxley', 1932)

print (f'{livro_1}\n{livro_2}\n{livro_3} )
2 respostas
solução!

Oi, Ricardo.

Obrigada por compartilhar seu código com a comunidade Alura.

Gostei bastante de como você estruturou a classe Livro, principalmente incluindo o método __str__ que deixa a saída bem organizada. Também foi legal ver que você aplicou o método emprestar para alterar o estado do atributo disponivel.

Continue firme nos estudos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Obrigado Lorena