Para não repetir cada pergunta, deixei dentro as marcações #[x], onde x representa o número do exercício e o código abaixo a resolução.
livraria.py
#[1]
class Livro:
dados_livro = []
def __init__(self, titulo, autor, ano_publicacao):
self._titulo = titulo.title()
self._autor = autor.title()
self._ano_publicacao = ano_publicacao
self._disponivel = True
self.dados_livro.append(self)
#[2]
def __str__(self):
return f'{self._titulo:<22}{self._autor:<20}{self._ano_publicacao:<8}{self._disponivel}'
@classmethod
def listar_livros(cls):
print(f'{'TÍTULO':<25}{'AUTOR':<20}{'PUBLICAÇÃO':<15}{'STATUS'}')
print('-'*70)
for livro in cls.dados_livro:
print(f'{livro._titulo:<25}{livro._autor:<20}{livro._ano_publicacao:<15}{livro.disponivel}')
@property
def disponivel(self):
return 'Disponível' if self._disponivel else 'Emprestado'
#[3]
def emprestar(self):
self._disponivel = not self._disponivel
#[4]
@staticmethod
def verificar_disponibilidade(ano):
livros_disponiveis = [
livro for livro in Livro.dados_livro
if livro._ano_publicacao == ano and livro.disponivel
]
if livros_disponiveis:
print(f'\nPUBLICADOS EM [{ano}] QUE ESTÃO DISPONÍVEIS')
print('-' * 70)
for livro in livros_disponiveis:
print(f'{livro._titulo:<25}{livro._autor:<20}')
else:
print(f'\nNenhum livro publicado em [{ano}] está disponível.')
biblioteca.py
from modelos.livraria import Livro
livro1 = Livro('a coragem de liderar','Brené Brown',2019)
livro2 = Livro('a outra face','Sidney Sheldon',1973)
livro2 = Livro('Água Viva','Clarice Lispector' ,1973)
livro2 = Livro('Steve Jobs','Walter Isaacson',2022)
'''
#[2]
print(livro1)
print(livro2)
print(livro1)'''
Livro.listar_livros()
print('\n')
#[5]
livro1.emprestar()
Livro.listar_livros()
#[6]
Livro.verificar_disponibilidade(1973)
Livro.verificar_disponibilidade(1968)
main.py
from modelos.livraria import Livro
livro4 = Livro('O Alquimista','Paulo Coelho', 1988)
livro5 = Livro('Cem Anos de Solidão','Gabriel G. Márquez', 1982)
#[2]
print(livro4)
print(livro5)