Notei que acabei resolvendo os problemas apresentados do 5 em diante nos casos de 1 a 4. Por isso, unifiquei todos os problemas e formulei minha solução completa. Segue para avaliação:
Arquivo com a classe:
from time import sleep
class Livro:
livros = []
consulta_livros = []
def __init__(self, titulo, autor, ano_publicacao):
self._titulo = titulo.title()
self._autor = autor.title()
self._ano_publicacao = ano_publicacao
self._disponivel = True
Livro.livros.append(self)
def __str__(self):
return f'O título {self._titulo} foi lançado pelo escritor {self._autor} em {self._ano_publicacao}'
def emprestar(self):
self._disponivel = not self._disponivel
@classmethod
def listar_livros(cls):
print()
print(f'{'LIVRO'.ljust(35)} | {'AUTOR'.ljust(35)} | {'ANO'.ljust(35)} | {'SITUAÇÃO'.ljust(35)}\n')
for livro in cls.livros:
print(f'{livro._titulo.ljust(35)} | {livro._autor.ljust(35)} | {str(livro._ano_publicacao).ljust(35)} | {livro.disponivel}')
@classmethod
def verificar_disponibilidade(cls, ano_consulta):
print()
print('Checando disponibilidade...\n')
sleep(5)
for livro in cls.livros:
if livro._ano_publicacao == ano_consulta:
Livro.consulta_livros.append(livro._titulo)
if len(Livro.consulta_livros) >= 1:
print(f'Temos os seguintes livros que foram publicados em {ano_consulta}:')
for i, titulo in enumerate(Livro.consulta_livros, start=1):
print(f'{i}. {titulo}')
else:
print('Não há livros disponíveis.')
@property
def disponivel(self):
return f'Disponível para empréstimo' if self._disponivel else 'Não disponível para empréstimo'
Arquivo com a aplicação:
from modelos.livro import Livro
def main():
# 2
livro1 = []
titulo1 = input('Digite o título do primeiro livro: ')
autor1 = input('Digite o nome do autor: ')
ano_publicacao1 = int(input('Digite o ano de lançamento do livro: '))
livro1.append(titulo1)
livro1.append(autor1)
livro1.append(ano_publicacao1)
print()
livro2 = []
titulo2 = input('Digite o título do segundo livro: ')
autor2 = input('Digite o nome do autor: ')
ano_publicacao2 = int(input('Digite o ano de lançamento do livro: '))
livro2.append(titulo2)
livro2.append(autor2)
livro2.append(ano_publicacao2)
print()
livro3 = []
titulo3 = input('Digite o título do terceiro livro: ')
autor3 = input('Digite o nome do autor: ')
ano_publicacao3 = int(input('Digite o ano de lançamento do livro: '))
livro3.append(titulo3)
livro3.append(autor3)
livro3.append(ano_publicacao3)
print()
first_book = Livro(*livro1) # Para desempacotar os dados e ler um a um e não como lista (o que daria um erro)
second_book = Livro(*livro2) # Para desempacotar os dados e ler um a um e não como lista (o que daria um erro)
third_book = Livro(*livro3) # Para desempacotar os dados e ler um a um e não como lista (o que daria um erro)
#livro2 = Livro('A Droga da Obediência', 'Pedro Bandeira', 1984)
print(f'1. {first_book}')
print(f'2. {second_book}')
print(f'3. {third_book}')
print()
#3
emprestimo = int(input('Digite o número do livro que deseja emprestar: '))
if emprestimo == 1:
first_book.emprestar()
elif emprestimo == 2:
second_book.emprestar()
elif emprestimo == 3:
third_book.emprestar()
else:
print('Opção inexistente!')
Livro.listar_livros()
#4
print()
ano_disponibilidade = int(input('Digite o ano de lançamento para checarmos nossa disponibilidade de livros: '))
Livro.verificar_disponibilidade(ano_disponibilidade)
if __name__ == '__main__':
main()