-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpratica120.py
More file actions
127 lines (106 loc) · 3.24 KB
/
pratica120.py
File metadata and controls
127 lines (106 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Exercicio - Lista de tarefas com desfazer e refazer
# todo = [] -> lista de tarefas
# todo = ['fazer café'] -> Adiciona fazer café
# todo = ['fazer café', 'caminhar'] Adiciona caminhar
# desfazer = ['fazer café',] -> Refazer ['Caminhar']
# desfazer = [] -> Refazer ['caminhar', 'fazer café']
# refazer = todo ['fazer café]
# refazer = todo ['fazer café', 'caminhar']
import os
import json
def listar(tarefas):
contador = 1
print()
if not tarefas:
print('Nenhuma tarefa para listar.')
print()
return
print('Tarefas:')
for tarefa in tarefas:
print(f'\t{contador} - {tarefa}')
contador += 1
print()
def desfazer(tarefas, tarefas_refazer):
print()
if not tarefas:
print('Nenhuma tarefa para desfazer.')
return
tarefa = tarefas.pop()
print(f'{tarefa} desfeita com sucesso.')
tarefas_refazer.append(tarefa)
print()
listar(tarefas)
def refazer(tarefas, tarefas_refazer):
if not tarefas_refazer:
print('Nenhuma tarefa para refazer.')
return
tarefa = tarefas_refazer.pop()
print(f'{tarefa} refeita com sucesso.')
tarefas.append(tarefa)
print()
listar(tarefas)
def adicionar(tarefa, tarefas):
tarefa = tarefa.strip()
if not tarefa:
print('Você não digitou nenhuma tarefa.')
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:
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 = 'aula123.json'
tarefas = ler([], CAMINHO_ARQUIVO)
tarefas_refazer = []
print('Comandos: ')
print('\tListar - Para listar')
print('\tDesfazer - Para desfazer')
print('\tRefazer - Para refazer')
print('\tClear - Para limpar o terminal')
print('\tSair - Para sair')
while True:
tarefa = input('Digite um comando ou uma tarefa: ').lower()
comandos = {
'listar': lambda: listar(tarefas),
'desfazer': lambda: desfazer(tarefas, tarefas_refazer),
'refazer': lambda: refazer(tarefas, tarefas_refazer),
'clear': lambda: os.system('cls'),
'adicionar': lambda: adicionar(tarefa, tarefas),
}
comando = comandos.get(tarefa) if comandos.get(tarefa) is not None else \
comandos['adicionar']
comando()
if tarefa == 'sair':
break
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('cls')
# elif tarefa == 'sair':
# os.system('cls')
# listar(tarefas)
# break
# else:
# adicionar(tarefa, tarefas)
# listar(tarefas)
#