David Hereira
Estudianteme costó bastante este ejercicio, no que con los otros no tuviera alguna dificultad, pero se resolvían con solo pensar un poco, pero en este caso no sabia o recordaba el uso de funciones internas como metodos de una funcion externa y no encontraba la clase de los cursos basicos de python que he tomado donde los explicaban. Luchando con la tentacion de ir directo a la respuestas de los compañeros y ver, finalmente logré hacerlo como un poco de ensayo y error, algo de logica e intuición, pero culminar todo el ejercicio me tomó como 6 horas en total, si fuese un prueba tecnica, pues dudo que hubiese aprobado
for item in arrayTasks: if (item['id'] ==value) or(item['name'] ==value): item['completed']=True def getSortedTasksByPriority(): # Tu código aquí 👇 sortedTasks =[] for i in range(1, 2): if arrayTasks[i]['priority'] < arrayTasks[i-1]['priority']: sortedTasks.append(arrayTasks[i]) sortedTasks.append(arrayTasks[i-1]) else: sortedTasks.append(arrayTasks[i-1]) sortedTasks.append(arrayTasks[i]) return sortedTasks def filterTasksByTag(tag): # Tu código aquí 👇 return [task for task in arrayTasks if tag in task['tags']] def updateTask(taskId, updates): # Tu código aquí 👇 for i in range(len(arrayTasks)): if arrayTasks[i]['id']==taskId: for key, value in updates.items(): arrayTasks[i][key]=value return {'addTask': addTask, 'getTasks': getTasks, 'removeTask': removeTask, 'getPendingTasks':getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted':markTaskAsCompleted, 'getSortedTasksByPriority':getSortedTasksByPriority, 'filterTasksByTag':filterTasksByTag, 'updateTask' :updateTask}
Maga Hernandez
Estudiantetal cual....!!
Jose Eleazar Gavidia Diaz
EstudianteHola, Aqui esta una Solucion con Pruebas Internas para Validacion de cada uno de los Metodos propuestos por el Ejercicio: Saludos
def createTaskPlanner(): tasks = [] def addTask(task): task['completed'] = False tasks.append(task) def removeTask(value): for task in tasks: if task['id'] == value or task['name'] == value: tasks.remove(task) break def getTasks(): return tasks def getPendingTasks(): return [task for task in tasks if not task['completed']] def getCompletedTasks(): return [task for task in tasks if task['completed']] def markTaskAsCompleted(value): for task in tasks: if task['id'] == value or task['name'] == value: task['completed'] = True break def getSortedTasksByPriority(): return sorted(tasks, key=lambda task: task['priority']) def filterTasksByTag(tag): return [task for task in tasks if tag in task['tags']] def updateTask(taskId, updates): for task in tasks: if task['id'] == taskId: for key, value in updates.items(): task[key] = value break return { 'addTask': addTask, 'removeTask': removeTask, 'getTasks': getTasks, 'getPendingTasks': getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted': markTaskAsCompleted, 'getSortedTasksByPriority': getSortedTasksByPriority, 'filterTasksByTag': filterTasksByTag, 'updateTask': updateTask, } planner = createTaskPlanner() planner'addTask' planner'addTask' planner'addTask' planner'markTaskAsCompleted' def print_dictionaries(dictionaries): for dictionary in dictionaries: for key, value in dictionary.items(): print(key, "=", value) print() def print_title(title): print("°"*20, title , "°"*20) print_title("Tareas Completadas") print_dictionaries(planner['getCompletedTasks']()) print_title("Tareas Pendientes") print_dictionaries(planner['getPendingTasks']()) planner'markTaskAsCompleted' print_title("Marcando Tarea 3 Como Completada") print_title("Tareas Completadas") print_dictionaries(planner['getCompletedTasks']()) print_title("Tareas Pendientes") print_dictionaries(planner['getPendingTasks']()) print_title("Tareas Ordenadas por Prioridad") print_dictionaries(planner['getSortedTasksByPriority']()) print_title("Tareas Filtradas por Etiqueta: Python") print_dictionaries(planner'filterTasksByTag') print_title("Tareas Filtradas por Etiqueta: personal") print_dictionaries(planner'filterTasksByTag') print_title("Tareas Filtradas por Etiqueta del Ejemplo 2: shopping") print_dictionaries(planner'filterTasksByTag') print_title("Tareas Tareas Totales") print_dictionaries(planner['getTasks']()) print_title("Removiendo Tarea con ID: 2") planner'removeTask' print_title("Tareas Tareas Totales") print_dictionaries(planner['getTasks']())
Linda Atenea Mejía Usme
EstudianteLo que mas me costó entender en esta ocación fue conocer y entender que son y como funcionaban los clousure y como se retornan las funciones anidadas de la función principal.
def createTaskPlanner(): tasks = [] def _findTask(key, value): for task in tasks: if task[key] == value: return task def addTask(task): task["completed"] = False tasks.append(task) def removeTask(value): if type(value) == int: tasks.remove(_findTask("id", value)) elif type(value) == str: tasks.remove(_findTask("name", value)) def getTasks(): return tasks def getPendingTasks(): pendingTasks = [] for task in tasks: if task["completed"] == False: pendingTasks.append(task) return pendingTasks def getCompletedTasks(): completedTasks = [] for task in tasks: if task["completed"] == True: completedTasks.append(task) return completedTasks def markTaskAsCompleted(value): if type(value) == int: _findTask("id", value)["completed"] = True elif type(value) == str: _findTask("name", value)["completed"] = True def getSortedTasksByPriority(): return sorted(tasks, key=lambda task: task["priority"]) def filterTasksByTag(tag): taskByTag = [] for task in tasks: for tagElement in task["tags"]: if tagElement == tag: taskByTag.append(task) return taskByTag def updateTask(taskId, updates): _findTask("id", taskId).update(updates) return { "addTask": addTask, "getTasks": getTasks, "removeTask": removeTask, "getPendingTasks": getPendingTasks, "getCompletedTasks": getCompletedTasks, "markTaskAsCompleted": markTaskAsCompleted, "getSortedTasksByPriority": getSortedTasksByPriority, "filterTasksByTag": filterTasksByTag, "updateTask": updateTask }
Leonel Federico Valencia Estudillo
EstudianteEsta muy dificil, me tarde dias y mas en resolver
UnboundLocalError: cannot access local variable 'tasks' where it is not associated with a value
pero al final lo termine
def createTaskPlanner(): tasks = [] def addTask(task): task['completed'] = False tasks.append(task) def removeTask(value): nonlocal tasks # para acceder a la variable tasks del ambito exterior tasks = [task for task in tasks if task['id'] != value or task['name'] != value] def getTasks(): return tasks def getPendingTasks(): nonlocal tasks return [task for task in tasks if task['completed'] == False] def getCompletedTasks(): nonlocal tasks return [task for task in tasks if task['completed'] == True] def markTaskAsCompleted(value): nonlocal tasks # para acceder a la variable tasks del ambito exterior for task in tasks: if task['id'] == value or task['name'] == value: task['completed'] = True def getSortedTasksByPriority(): sortedTask = [] sortedTask = sorted(tasks,key=lambda task: task['priority']) return sortedTask def filterTasksByTag(tag): return [task for task in tasks if tag in task['tags']] def updateTask(taskId, updates): for task in tasks: if task['id']==taskId: for key, value in updates.items(): task[key]=value return {'addTask': addTask, 'removeTask': removeTask, 'getTasks': getTasks, 'getPendingTasks': getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted': markTaskAsCompleted, 'getSortedTasksByPriority': getSortedTasksByPriority, 'filterTasksByTag': filterTasksByTag, 'updateTask': updateTask }
Nicolas Alpargatero
EstudianteEsta práctica está bastante completa, me demore, pero muy buena.
Sebastián Alejandro Arce García
EstudianteMe pareció muy bueno este ejercicio, tuve que consultar algunas cosas a chatgpt pero en últimas un gran reto.
* *
*
def createTaskPlanner(): tasks = [] def addTask(task): task["completed"] = False tasks.append(task) return tasks def removeTask(value): for i in tasks: if i["name"] == value: tasks.remove(i) elif i["id"] == value: tasks.remove(i) def getTasks(): return tasks def getPendingTasks(): pending_tasks = [] for i in tasks: if i["completed"] == False: pending_tasks.append(i) return pending_tasks def getCompletedTasks(): completed_tasks = [] for i in tasks: if i["completed"] == True: completed_tasks.append(i) return completed_tasks def markTaskAsCompleted(value): for i in tasks: if i["name"] == value: i["completed"] = True elif i["id"] == value: i["completed"] = True def getSortedTasksByPriority(): tasks_sorted = sorted(tasks, key=lambda i: i["priority"], reverse=False) return tasks_sorted def filterTasksByTag(tag): tasks_filtered = list(filter(lambda x: tag in x["tags"], tasks)) return tasks_filtered def updateTask(taskId, updates): for i in tasks: if i["id"] == taskId: i.update(updates) return { "addTask":addTask, "removeTask":removeTask, "getTasks": getTasks, "getPendingTasks":getPendingTasks, "getCompletedTasks":getCompletedTasks, "markTaskAsCompleted":markTaskAsCompleted, "getSortedTasksByPriority":getSortedTasksByPriority, "filterTasksByTag":filterTasksByTag, "updateTask":updateTask }
Ángel Sabillón
EstudianteCostó un poco pero lo logré!
def createTaskPlanner(): tasks = []
def addTask(task): task['completed'] = False tasks.append(task)
def removeTask(value): if isinstance(value, int): for task in tasks: if task['id'] == value: tasks.remove(task) elif isinstance(value, str): for task in tasks: if task['name'] == value: tasks.remove(task)
def getTasks(): return tasks def getPendingTasks(): return [task for task in tasks if task['completed'] == False] def getCompletedTasks(): return [task for task in tasks if task['completed'] == True] def markTaskAsCompleted(value): if isinstance(value, int): for task in tasks: if task['id'] == value: task['completed'] = True elif isinstance(value, str): for task in tasks: if task['name'] == value: task['completed'] = True def getSortedTasksByPriority(): return sorted(tasks, key=lambda x: x['priority']) def filterTasksByTag(tag): return [task for task in tasks if tag in task['tags']] def updateTask(taskId, updates): for task in tasks: if task['id'] == taskId: for key, value in updates.items(): task[key] = value return {'addTask': addTask, 'removeTask': removeTask, 'getTasks': getTasks, 'getPendingTasks': getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted': markTaskAsCompleted, 'getSortedTasksByPriority': getSortedTasksByPriority, 'filterTasksByTag': filterTasksByTag, 'updateTask': updateTask}
planner = createTaskPlanner()
planner'addTask'
planner'addTask'
planner'updateTask'
# print(planner'filterTasksByTag')
Harold Edward Rodriguez Navarro
EstudianteReto del día superado.
def createTaskPlanner(): tasks = list() def addTask(task): task['completed'] = False tasks.append(task) def removeTask(value): for task in tasks: if task['id'] == value: tasks.remove(task) elif task['name'] == value: tasks.remove(task) return def getTasks(): return tasks def getPendingTasks(): return [task for task in tasks if task['completed'] == False] def getCompletedTasks(): return [task for task in tasks if task['completed'] == True] def markTaskAsCompleted(value): for task in tasks: if task['id'] == value or task['name'] == value: task['completed'] = True break return def getSortedTasksByPriority(): new_tasks = [task for task in tasks] priority = lambda task: task['priority'] new_tasks.sort(key=priority) return new_tasks def filterTasksByTag(tag): return [task for task in tasks if tag in task['tags']] def updateTask(taskId, updates): for task in tasks: if task['id'] == taskId: task.update(updates) return return {'addTask': addTask, 'removeTask': removeTask, 'getTasks': getTasks, 'getPendingTasks': getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted': markTaskAsCompleted, 'getSortedTasksByPriority': getSortedTasksByPriority, 'filterTasksByTag': filterTasksByTag, 'updateTask': updateTask }
Sergio Daniel Aguirre Consuegra
EstudianteMi código:
def createTaskPlanner(): tasks = [] def addTask(task): task["completed"] = False tasks.append(task) return tasks def removeTask(value): for task in tasks: if task["id"] == value or task["name"] == value: tasks.remove(task) return tasks
def getTasks(): return tasks def getPendingTasks(): return list(filter((lambda x:x["completed"] == True), tasks)) def getCompletedTasks(): return list(filter((lambda x:x["completed"] != False), tasks)) def markTaskAsCompleted(value): for task in tasks: if task["id"] == value or task["name"] == value: task["completed"] = True return tasks def getSortedTasksByPriority(): return sorted(tasks, key = lambda x:x["priority"])
def filterTasksByTag(tag): list_tag = [] for task in tasks: for tag1 in task["tags"]: if tag1 == tag: list_tag.append(task) return(list_tag) def updateTask(taskId, updates): for task in tasks: if task["id"] == taskId: for key, value in updates.items(): task[key] = value return tasks
return {"addTask":addTask, "removeTask":removeTask, "getTasks":getTasks, "getPendingTasks":getPendingTasks, "getCompletedTasks":getCompletedTasks, "markTaskAsCompleted":markTaskAsCompleted, "getSortedTasksByPriority":getSortedTasksByPriority, "filterTasksByTag":filterTasksByTag, "updateTask":updateTask}
Enrique Barrera
EstudianteC:>
C:>
C:>
C:>
C:>
C:>
C:>
C:>
def createTaskPlanner(): tareas=[] def addTask(task): task["completed"] = False tareas.append(task) return 0 def removeTask(value): for tarea in tareas[:]: if tarea["id"]==value or tarea["name"]==value: tareas.remove(tarea) return 0 def getTasks(): return tareas def getPendingTasks(): incompleta = lambda tarea: tarea["completed"] == False pendientes=list(filter(incompleta, tareas)) return pendientes def getCompletedTasks(): completada = lambda tarea: tarea["completed"] == True terminadas=list(filter(completada, tareas)) return terminadas pass def markTaskAsCompleted(value): for tarea in tareas[:]: if tarea["id"]==value or tarea["name"]==value: tarea["completed"]=True return 0 def getSortedTasksByPriority(): temp=[] temp=tareas temp.sort(key=lambda tarea: tarea["priority"]) return temp def filterTasksByTag(tag): filtradas=[] for tarea in tareas: if tag in tarea["tags"]: filtradas.append(tarea) return filtradas def updateTask(taskId, updates): for tarea in tareas: if tarea["id"]==taskId: for clave, valor in updates.items(): tarea[clave]=valor return 0 return {"markTaskAsCompleted":markTaskAsCompleted,"getCompletedTasks":getCompletedTasks ,"updateTask":updateTask, "filterTasksByTag":filterTasksByTag,"addTask": addTask, "getTasks": getTasks, "removeTask": removeTask, "getPendingTasks": getPendingTasks, "getSortedTasksByPriority":getSortedTasksByPriority}
Diego Paredes Piñón
Estudiante<code> def createTaskPlanner(): taskList = [] def addTask(task): task['completed'] = False taskList.append(task) def removeTask(value): index_list = None for index, dictionary in enumerate(taskList): if dictionary.get('id') == value or dictionary.get('name') == value: index_list = index break if index_list is not None: taskList.pop(index_list) def getTasks(): return taskList def getPendingTasks(): return [dictionary for dictionary in taskList if dictionary.get('completed') == False] def getCompletedTasks(): return [dictionary for dictionary in taskList if dictionary.get('completed') == True] def markTaskAsCompleted(value): matching_dictionaries = [dictionary for dictionary in taskList if dictionary.get('id') == value or dictionary.get('name') == value] if matching_dictionaries: matching_dictionaries[0]['completed'] = True def getSortedTasksByPriority(): return sorted(taskList, key=lambda k: k['priority']) def filterTasksByTag(tag): return [dictionary for dictionary in taskList if tag in dictionary['tags']] def updateTask(taskId, updates): matching_dictionaries = [dictionary for dictionary in taskList if dictionary.get('id') == taskId] if matching_dictionaries: for key, value in updates.items(): matching_dictionaries[0][key] = value return { "addTask" : addTask, "removeTask" : removeTask, "getTasks" : getTasks, "getPendingTasks" : getPendingTasks, "getCompletedTasks" : getCompletedTasks, "markTaskAsCompleted" : markTaskAsCompleted, "getSortedTasksByPriority" : getSortedTasksByPriority, "filterTasksByTag" : filterTasksByTag, "updateTask" : updateTask }
Fabricio González Guasque
Estudiantedef createTaskPlanner(): # Tu código aquí 👇 tareas = [] def addTask(task): # Tu código aquí 👇 task["completed"] = False tareas.append(task) def removeTask(value): # Tu código aquí 👇 for tarea in tareas: if tarea["id"] == value or tarea["name"] == value: tareas.remove(tarea) def getTasks(): # Tu código aquí 👇 return tareas def getPendingTasks(): # Tu código aquí 👇 for tarea in tareas: if tarea["completed"] == False: return tarea def getCompletedTasks(): # Tu código aquí 👇 completadas = [] for tarea in tareas: if tarea["completed"] == True: completadas.append(tarea) return completadas def markTaskAsCompleted(value): # Tu código aquí 👇 for tarea in tareas: if tarea["id"] == value or tarea["name"] == value: tarea["completed"] = True return tareas def getSortedTasksByPriority(): # Tu código aquí 👇 lista = [] for tarea in tareas: if tarea["priority"] == 1: lista.append(tarea) for tarea in tareas: if tarea["priority"] == 2: lista.append(tarea) for tarea in tareas: if tarea["priority"] == 3: lista.append(tarea) return lista def filterTasksByTag(tag): tareas_filtradas = [] # Lista para almacenar las tareas que coinciden con la etiqueta for tarea in tareas: if tag in tarea['tags']: tareas_filtradas.append(tarea) # Agregar la tarea a la lista de tareas filtradas return tareas_filtradas def updateTask(taskId, updates): for tarea in tareas: if tarea["id"] == taskId: if "name" in updates: tarea["name"] = updates["name"] if "completed" in updates: tarea["completed"] = updates["completed"] if "priority" in updates: tarea["priority"] = updates["priority"] if "tags" in updates: tarea["tags"] = updates["tags"] if "notes" in updates: tarea["notes"] = updates["notes"] if "place" in updates: tarea["place"] = updates["place"] # return tareas return {'addTask':addTask, "filterTasksByTag":filterTasksByTag, "getCompletedTasks":getCompletedTasks, "getPendingTasks": getPendingTasks, "getSortedTasksByPriority":getSortedTasksByPriority, "getTasks":getTasks, 'markTaskAsCompleted':markTaskAsCompleted, "removeTask":removeTask, "updateTask":updateTask, }
Victor Ortiz
EstudianteMi resultado: . . . . . . . . . . . . . . . . . . . . . . . .
def createTaskPlanner(): # Tu código aquí 👇 tasks = [] def addTask(task): # Tu código aquí 👇 task['completed'] = False tasks.append(task) pass def removeTask(value): # Tu código aquí 👇 for task in tasks: if task['id'] == value or task['name'] == value: tasks.remove(task) break pass def getTasks(): # Tu código aquí 👇 return tasks pass def getPendingTasks(): # Tu código aquí 👇 return list(filter(lambda task: not task['completed'], tasks)) pass def getCompletedTasks(): # Tu código aquí 👇 return list(filter(lambda task: task['completed'], tasks)) pass def markTaskAsCompleted(value): # Tu código aquí 👇 for task in tasks: if task['id'] == value or task['name'] == value: task['completed'] = True break pass def getSortedTasksByPriority(): # Tu código aquí 👇 return sorted(tasks, key = lambda task: task['priority']) pass def filterTasksByTag(tag): # Tu código aquí 👇 return list(filter(lambda task: tag in task['tags'], tasks)) pass def updateTask(taskId, updates): # Tu código aquí 👇 for index, task in enumerate(tasks): if task['id'] == taskId: tasks[index].update(updates) break pass return { 'addTask': addTask, 'removeTask': removeTask, 'getTasks': getTasks, 'getPendingTasks': getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted': markTaskAsCompleted, 'getSortedTasksByPriority': getSortedTasksByPriority, 'filterTasksByTag': filterTasksByTag, 'updateTask': updateTask }
Waldir Zapata Garcia
EstudianteFrancisco Jesús Eslava Fernández
Estudiante#función que crea la lista de tareas def createTaskPlanner(): listaTareas = [] #función que agrega una tarea a la lista def addTask(task): task["completed"] = False listaTareas.append(task) #función que elimina una tarea de la lista def removeTask(value): idTarea = filter_tasks(value) listaTareas.pop(idTarea) #función que devuelve la lista de tareas def getTasks(): return listaTareas #función que devuelve las tareas pendientes def getPendingTasks(): return list(filter(lambda i: not i["completed"], listaTareas)) #función que devuelve las tareas completadas def getCompletedTasks(): return list(filter(lambda i: i["completed"], listaTareas)) #función que filtra el id de una tarea o por el nombre def filter_tasks(value): if isinstance(value, int): idx = [ i for i in range(len(listaTareas)) if listaTareas[i]["id"] == value] else: idx = [ i for i in range(len(listaTareas)) if listaTareas[i]["name"] == value] return idx[0] #función que marca una tarea completada def markTaskAsCompleted(value): idx = filter_tasks(value) listaTareas[idx]["completed"] = True #función que ordena tareas por prioridad def getSortedTasksByPriority(): sorted_tasks = sorted(listaTareas, key=lambda i: i["priority"]) return sorted_tasks #función que filtra tareas por etiqueta def filterTasksByTag(tag): by_tag = filter(lambda i: tag in i["tags"], listaTareas) return list(by_tag) #función que actualiza tareas def updateTask(taskId, updates): idx = filter_tasks(taskId) listaTareas[idx].update(updates) #regresa los métodos return { "addTask": addTask, "removeTask": removeTask, "getTasks": getTasks, "getPendingTasks": getPendingTasks, "getCompletedTasks": getCompletedTasks, "markTaskAsCompleted": markTaskAsCompleted, "getSortedTasksByPriority": getSortedTasksByPriority, "filterTasksByTag": filterTasksByTag, "updateTask": updateTask }
Alejandro Anaya
Estudiante🛡️🛡️Escudo anti-spoilers🛡️🛡️
Mi solución al reto:
def createTaskPlanner(): tasks = [] def _find(task): for t in tasks: if t['id'] == task or t['name'] == task: return t return None def addTask(task): task['completed'] = False tasks.append(task) def removeTask(value): for t in tasks: tasks.remove(_find(value)) def getTasks(): return tasks def getPendingTasks(): return [t for t in tasks if not t['completed']] def getCompletedTasks(): return [t for t in tasks if t['completed']] def markTaskAsCompleted(value): for t in tasks: if _find(value): t['completed'] = True def getSortedTasksByPriority(): return sorted(tasks, key=lambda x: x['priority']) def filterTasksByTag(tag): return [t for t in tasks if tag in t['tags']] def updateTask(taskId, updates): for t in tasks: if _find(taskId): t.update(updates) return { 'addTask': addTask, 'removeTask': removeTask, 'getTasks': getTasks, 'getPendingTasks': getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted': markTaskAsCompleted, 'getSortedTasksByPriority': getSortedTasksByPriority, 'filterTasksByTag': filterTasksByTag, 'updateTask': updateTask }
Fernando Jesús Núñez Valdez
EstudianteEstuvo genial este Playground. Tuve que investigar y repasar notas para poder resolverlo. Thanks, Platzi. . . . . . . . . . . .
def createTaskPlanner(): tareas = [] def addTask(task): task['completed'] = False tareas.append(task) def removeTask(value): i = -1 found = False while not found and i < len(tareas): i += 1 if tareas[i]['id'] == value or tareas[i]['name'] == value: found = True tareas.pop(i) def getTasks(): return tareas def getPendingTasks(): return list(filter(lambda x: x['completed'] == False, tareas)) def getCompletedTasks(): return list(filter(lambda x: x['completed'] == True, tareas)) def markTaskAsCompleted(value): i = -1 found = False while not found and i < len(tareas): i += 1 if tareas[i]['id'] == value or tareas[i]['name'] == value: found = True tareas[i]['completed'] = True def getSortedTasksByPriority(): return sorted(tareas, key= lambda x: x['priority']) def filterTasksByTag(tag): return list(filter(lambda x: tag in x['tags'], tareas)) def updateTask(taskId, updates): # Get index of task i = -1 found = False while not found and i < len(tareas): i += 1 if tareas[i]['id'] == taskId: found = True # Actualization tareas[i] = tareas[i] | updates return {'addTask': addTask, 'removeTask': removeTask, 'getTasks': getTasks, 'getPendingTasks': getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted': markTaskAsCompleted, 'getSortedTasksByPriority': getSortedTasksByPriority, 'filterTasksByTag': filterTasksByTag, 'updateTask':updateTask}
José Miguel Reyes
EstudianteMi solución:
def createTaskPlanner(): tasks = [] def addTask(task): if 'completed' not in task: task['completed'] = False tasks.append(task) def removeTask(value): task = next((t for t in tasks if t['id'] == value or t['name'] == value), None) if task: tasks.remove(task) def getTasks(): return tasks def getPendingTasks(): return [task for task in tasks if not task['completed']] def getCompletedTasks(): return [task for task in tasks if task['completed']] def markTaskAsCompleted(value): task = next((t for t in tasks if t['id'] == value or t['name'] == value), None) if task: task['completed'] = True def getSortedTasksByPriority(): return sorted(tasks, key=lambda x: x['priority']) def filterTasksByTag(tag): return [task for task in tasks if tag in task.get('tags', [])] def updateTask(taskId, updates): task = next((t for t in tasks if t['id'] == taskId), None) if task: task.update(updates) return { 'addTask': addTask, 'removeTask': removeTask, 'getTasks': getTasks, 'getPendingTasks': getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted': markTaskAsCompleted, 'getSortedTasksByPriority': getSortedTasksByPriority, 'filterTasksByTag': filterTasksByTag, 'updateTask': updateTask }
Daniel Salazar Munoz
EstudianteEsta fue una prueba novedosa, nunca había hecho algo así, al menos combinar closures con diccionarios, aprendi algo nuevo
def createTaskPlanner(): tasks = [] def addTask(task): task['completed'] = False tasks.append(task) def removeTask(value): nonlocal tasks # print(value == tasks[0]['id']) tasks = [task for task in tasks if task['id'] != value and task['name'] != value] def getTasks(): return tasks def getPendingTasks(): nonlocal tasks tasks = [task for task in tasks if task['completed'] != True] return tasks def getCompletedTasks(): nonlocal tasks completed = [task for task in tasks if task['completed'] != False] return completed def markTaskAsCompleted(value): # nonlocal tasks for i, task in enumerate(tasks): if task['id'] == value or task['name'] == value: tasks[i]['completed'] = True def getSortedTasksByPriority(): return sorted(tasks, key=lambda x: x['priority'] ) def filterTasksByTag(tag): return list(filter(lambda x: tag in x['tags'] , tasks)) def updateTask(taskId, updates): for i, task in enumerate(tasks): if task['id' ] == taskId: for key, value in updates.items(): tasks[i][key] = value return { 'addTask': addTask, 'removeTask': removeTask, 'getTasks': getTasks, 'getPendingTasks':getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted':markTaskAsCompleted, 'getSortedTasksByPriority':getSortedTasksByPriority, 'filterTasksByTag':filterTasksByTag, 'updateTask' :updateTask }
Harold Zurita Simon
EstudianteSolución 😄... .
def createTaskPlanner(): tasks = [] def addTask(task): task['completed'] = False tasks.append(task) def removeTask(value): item = [ task for task in tasks if task['id'] == value or task['name'] == value ][0] return tasks.remove(item) def getTasks(): return tasks def getPendingTasks(): return [ task for task in tasks if task['completed'] == False ] def getCompletedTasks(): return [ task for task in tasks if task['completed'] == True ] def markTaskAsCompleted(value): index = tasks.index([ task for task in tasks if task['id'] == value or task['name'] == value ][0]) tasks[index]['completed'] = True def getSortedTasksByPriority(): return sorted( tasks, key=lambda task: task['priority'] ) def filterTasksByTag(tag): return [ task for task in tasks if tag in task['tags'] ] def updateTask(taskId, updates): index = tasks.index([ task for task in tasks if task['id'] == taskId ][0]) tasks[index].update(updates) return { 'addTask': addTask, 'removeTask': removeTask, 'getTasks': getTasks, 'getPendingTasks': getPendingTasks, 'getCompletedTasks': getCompletedTasks, 'markTaskAsCompleted': markTaskAsCompleted, 'getSortedTasksByPriority': getSortedTasksByPriority, 'filterTasksByTag': filterTasksByTag, 'updateTask': updateTask }