121 lines
3.1 KiB
Python
121 lines
3.1 KiB
Python
# Exercício - Lista de tarefas com desfazer e refazer
|
|
# Música para codar =)
|
|
# Everybody wants to rule the world - Tears for fears
|
|
# todo = [] -> lista de tarefas
|
|
# todo = ['fazer café'] -> Adicionar fazer café
|
|
# todo = ['fazer café', 'caminhar'] -> Adicionar caminhar
|
|
# desfazer = ['fazer café',] -> Refazer ['caminhar']
|
|
# desfazer = [] -> Refazer ['caminhar', 'fazer café']
|
|
# refazer = todo ['fazer café']
|
|
# refazer = todo ['fazer café', 'caminhar']
|
|
import json
|
|
import os
|
|
|
|
|
|
def listar(tarefas):
|
|
print()
|
|
if not tarefas:
|
|
print('Nenhuma tarefa para listar')
|
|
return
|
|
|
|
print('Tarefas:')
|
|
for tarefa in tarefas:
|
|
print(f'\t{tarefa}')
|
|
print()
|
|
|
|
|
|
def desfazer(tarefas, tarefas_refazer):
|
|
print()
|
|
if not tarefas:
|
|
print('Nenhuma tarefa para desfazer')
|
|
return
|
|
|
|
tarefa = tarefas.pop()
|
|
print(f'{tarefa=} removida da lista de tarefas.')
|
|
tarefas_refazer.append(tarefa)
|
|
print()
|
|
listar(tarefas)
|
|
|
|
|
|
def refazer(tarefas, tarefas_refazer):
|
|
print()
|
|
if not tarefas_refazer:
|
|
print('Nenhuma tarefa para refazer')
|
|
return
|
|
|
|
tarefa = tarefas_refazer.pop()
|
|
print(f'{tarefa=} adicionada na lista de tarefas.')
|
|
tarefas.append(tarefa)
|
|
print()
|
|
listar(tarefas)
|
|
|
|
|
|
def adicionar(tarefa, tarefas):
|
|
print()
|
|
tarefa = tarefa.strip()
|
|
if not tarefa:
|
|
print('Você não digitou uma tarefa.')
|
|
return
|
|
print(f'{tarefa=} adicionada na lista de tarefas.')
|
|
tarefas.append(tarefa)
|
|
print()
|
|
listar(tarefas)
|
|
|
|
|
|
def ler(tarefas, caminho_arquivo):
|
|
dados = []
|
|
try:
|
|
with open(caminho_arquivo, 'r', encoding='utf8') as arquivo:
|
|
dados = json.load(arquivo)
|
|
except FileNotFoundError:
|
|
print('Arquivo não existe')
|
|
salvar(tarefas, caminho_arquivo)
|
|
return dados
|
|
|
|
|
|
def salvar(tarefas, caminho_arquivo):
|
|
dados = tarefas
|
|
with open(caminho_arquivo, 'w', encoding='utf8') as arquivo:
|
|
dados = json.dump(tarefas, arquivo, indent=2, ensure_ascii=False)
|
|
return dados
|
|
|
|
|
|
CAMINHO_ARQUIVO = 'aula119.json'
|
|
tarefas = ler([], CAMINHO_ARQUIVO)
|
|
tarefas_refazer = []
|
|
|
|
while True:
|
|
print('Comandos: listar, desfazer e refazer')
|
|
tarefa = input('Digite uma tarefa ou comando: ')
|
|
|
|
comandos = {
|
|
'listar': lambda: listar(tarefas),
|
|
'desfazer': lambda: desfazer(tarefas, tarefas_refazer),
|
|
'refazer': lambda: refazer(tarefas, tarefas_refazer),
|
|
'clear': lambda: os.system('clear'),
|
|
'adicionar': lambda: adicionar(tarefa, tarefas),
|
|
}
|
|
comando = comandos.get(tarefa) if comandos.get(tarefa) is not None else \
|
|
comandos['adicionar']
|
|
comando()
|
|
salvar(tarefas, CAMINHO_ARQUIVO)
|
|
|
|
# if tarefa == 'listar':
|
|
# listar(tarefas)
|
|
# continue
|
|
# elif tarefa == 'desfazer':
|
|
# desfazer(tarefas, tarefas_refazer)
|
|
# listar(tarefas)
|
|
# continue
|
|
# elif tarefa == 'refazer':
|
|
# refazer(tarefas, tarefas_refazer)
|
|
# listar(tarefas)
|
|
# continue
|
|
# elif tarefa == 'clear':
|
|
# os.system('clear')
|
|
# continue
|
|
# else:
|
|
# adicionar(tarefa, tarefas)
|
|
# listar(tarefas)
|
|
# continue
|