Boa Tarde encontrei uma apostila com o seguinte exercício:
- Criar uma aplicação em modo texto que represente uma lista de tarefas e que faça usa de uma implementação própria de Lista Duplamente Encadeada (LDE).
- [JÁ IMPLEMENTADO em "projeto.py"] Carregar Lista quando inicializar a aplicação (no construtor)
- Se existir o arquivo 'lista.p', carrega
- Se não existir cria uma nova lista na memória
- [JÁ IMPLEMENTADO em "tarefa.py"] Uma classe que representa uma tarefa contendo 'id' e 'descrição'.
- Ao inserir, garantir que a lista mantenha ordem crescente por "id" usando a técnica Insertion Sort
- Para isso, deverá modificar o método adicionarTarefa na classe MinhaLDE presente no arquivo "projeto.py", fazendo as chamadas corretas aos métodos inserirAntes e inserirApos.
- Deverá conter um menu com as seguintes opções:
- (1) Adicionar Tarefa
- (2) Excluir Tarefa usando o id
- (3) Editar Tarefa usando o id
- (4) Listar Tarefas
** NOTE QUE PARA CADA OPÇÃO LISTADA EXISTE UM MÉTODO CORRESPONDENTE NA CLASSE MinhaLDE(LDE)
CÓDIGOS PARA APLICAÇÃO PROJETO.py
from lde import LDE from lde import DNodo from tarefa import Tarefa import pickle import os from pathlib import Path
class MinhaLDE(LDE):
def adicionarTarefa(self, novo): # inserir usando a lógica de InsertionSort
## para chamar um metodo existente em LDE
## Exemplo: super().inserirApos(alvo, DNodo(tarefa))
## Exemplo: itemEncontrado = super().buscar(alvo)
pass
def buscarPorId(self, id):
pass
def excluirPorId(self, id):
pass
def listar(self):
if self.isEmpty():
print('Lista Vazia')
return
item = self.header.proximo # devolve o 1o da lista
while (item is not None):
# se o dado no DNodo for da classe Tarefa
if isinstance(item, Tarefa):
tarefa = item
print(tarefa.as_string())
item = item.proximo
class Projeto1: def init(self):
# construtor
arq = Path("lista.p")
if not arq.exists():
self.lista = MinhaLDE()
pickle.dump( self.lista, open( "lista.p", "wb" ) )
else:
self.lista = pickle.load( open( "lista.p", "rb" ) )
def gravar(self):
pickle.dump( self.lista, open( "lista.p", "wb" ) )
def limpar(self):
arq = Path("lista.p")
if arq.exists():
os.remove("lista.p")
def test(self):
self.lista.inserirInicio(Tarefa(1,'abc'))
self.lista.inserirInicio(Tarefa(2,'def'))
self.lista.listar()
self.gravar()
p = Projeto1() p.test()
#p.limpar() ## exclui o arquivo criado
TAREFA.py
Tarefa (classe)
class Tarefa: def init(self, id, descricao = None): self.id = id self.descricao = descricao
def __str__(self):
return str(self.id)
def as_string(self):
return '{} | {}'.format(str(self.id), str(self.descricao))
======================================================== A LDE é muito extensa manderei em outra pergunta o resto do código para ver se vocês conseguem me ajudar....