Skip to content

Commit

Permalink
Corrección Roadmap 25 + Nuevo ejercicio 26
Browse files Browse the repository at this point in the history
  • Loading branch information
mouredev committed Jun 24, 2024
1 parent 382a6c8 commit 84aa2b6
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 3 deletions.
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
## Corrección y próximo ejercicio

> #### Lunes 24 de junio de 2024 a las 20:00 (hora España) desde **[Twitch](https://twitch.tv/mouredev)**
> #### Consulta el **[horario](https://discord.gg/EWMJPcUq?event=1249918242370355262)** por país y crea un **[recordatorio](https://discord.gg/EWMJPcUq?event=1249918242370355262)**
> #### Lunes 1 de julio de 2024 a las 20:00 (hora España) desde **[Twitch](https://twitch.tv/mouredev)**
> #### Consulta el **[horario](https://discord.gg/CPKcDD9d?event=1252321976027054111)** por país y crea un **[recordatorio](https://discord.gg/CPKcDD9d?event=1252321976027054111)**
## Roadmap

Expand Down Expand Up @@ -59,7 +59,8 @@
|22|[FUNCIONES DE ORDEN SUPERIOR](./Roadmap/22%20-%20FUNCIONES%20DE%20ORDEN%20SUPERIOR/ejercicio.md)|[📝](./Roadmap/22%20-%20FUNCIONES%20DE%20ORDEN%20SUPERIOR/python/mouredev.py)|[▶️](https://youtu.be/ABniGtbqAXk)|[👥](./Roadmap/22%20-%20FUNCIONES%20DE%20ORDEN%20SUPERIOR/)
|23|[SINGLETON](./Roadmap/23%20-%20SINGLETON/ejercicio.md)|[📝](./Roadmap/23%20-%20SINGLETON/python/mouredev.py)|[▶️](https://youtu.be/cOIcFo_w9hA)|[👥](./Roadmap/23%20-%20SINGLETON/)
|24|[DECORADORES](./Roadmap/24%20-%20DECORADORES/ejercicio.md)|[📝](./Roadmap/24%20-%20DECORADORES/python/mouredev.py)|[▶️](https://youtu.be/jxJOjg7gPG4)|[👥](./Roadmap/24%20-%20DECORADORES/)
|25|[LOGS](./Roadmap/25%20-%20LOGS/ejercicio.md)|[🗓️ 24/06/24](https://discord.gg/EWMJPcUq?event=1249918242370355262)||[👥](./Roadmap/25%20-%20LOGS/)
|25|[LOGS](./Roadmap/25%20-%20LOGS/ejercicio.md)|[📝](./Roadmap/25%20-%20LOGS/python/mouredev.py)||[👥](./Roadmap/25%20-%20LOGS/)
|26|[SOLID: PRINCIPIO DE RESPONSABILIDAD ÚNICA](./Roadmap/26%20-%20SOLID%20SRP/ejercicio.md)|[🗓️ 01/07/24](https://discord.gg/CPKcDD9d?event=1252321976027054111)||[👥](./Roadmap/26%20-%20SOLID%20SRP/)

## Instrucciones

Expand Down
76 changes: 76 additions & 0 deletions Roadmap/25 - LOGS/python/mouredev.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import logging
import time

"""
Ejercicio
"""

logging.basicConfig(level=logging.DEBUG,
format="%(asctime)s - %(levelname)s - %(message)s",
handlers=[logging.StreamHandler()])

logging.debug("Esto es un mensaje de DEBUG")
logging.info("Esto es un mensaje de INFO")
logging.warning("Esto es un mensaje de WARNING")
logging.error("Esto es un mensaje de ERROR")
logging.critical("Esto es un mensaje de CRITICAL")

"""
Extra
"""


class TaskManager:

def __init__(self) -> None:
self.tasks = {}

def add_task(self, name: str, description: str):
start_time = time.time()
if name not in self.tasks:
self.tasks[name] = description
logging.info(f"Tarea añadida: {name}.")
else:
logging.warning(
f"Se ha intentado añadir una tarea que ya existe: {name}.")
logging.debug(f"Número de tareas: {len(self.tasks)}")
end_time = time.time()
self._print_time(start_time, end_time)

def delete_task(self, name: str):
start_time = time.time()
if name in self.tasks:
del self.tasks[name]
logging.info(f"Se la eliminado la tarea: {name}.")
else:
logging.error(
f"Se ha intentado eliminar una tarea que no exsite: {name}.")
logging.debug(f"Número de tareas: {len(self.tasks)}")
end_time = time.time()
self._print_time(start_time, end_time)

def list_tasks(self):
start_time = time.time()
if self.tasks:
logging.info(f"Se va a imprimir la lista de tareas.")
for name, description in self.tasks.items():
print(f"{name} - {description}")
else:
logging.info("No hay tareas para mostar.")
end_time = time.time()
self._print_time(start_time, end_time)

def _print_time(self, start_time, end_time):
logging.debug(
f"Tiempo de ejecución: {end_time - start_time:.6f} segundos.")


task_manager = TaskManager()
task_manager.list_tasks()
task_manager.add_task("Pan", "Comprar 5 barras de pan")
task_manager.add_task("Python", "Estudiar Python")
task_manager.list_tasks()
task_manager.delete_task("Python")
task_manager.list_tasks()
task_manager.add_task("Pan", "Comprar 5 barras de pan")
task_manager.delete_task("Python")
36 changes: 36 additions & 0 deletions Roadmap/26 - SOLID SRP/ejercicio.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# #26 SOLID: PRINCIPIO DE RESPONSABILIDAD ÚNICA (SRP)
> #### Dificultad: Media | Publicación: 24/06/24 | Corrección: 01/07/24
## Ejercicio

```
/*
* EJERCICIO:
* Explora el "Principio SOLID de Responsabilidad Única (Single Responsibility
* Principle, SRP)" y crea un ejemplo simple donde se muestre su funcionamiento
* de forma correcta e incorrecta.
*
* DIFICULTAD EXTRA (opcional):
* Desarrolla un sistema de gestión para una biblioteca. El sistema necesita
* manejar diferentes aspectos como el registro de libros, la gestión de usuarios
* y el procesamiento de préstamos de libros.
* Requisitos:
* 1. Registrar libros: El sistema debe permitir agregar nuevos libros con
* información básica como título, autor y número de copias disponibles.
* 2. Registrar usuarios: El sistema debe permitir agregar nuevos usuarios con
* información básica como nombre, número de identificación y correo electrónico.
* 3. Procesar préstamos de libros: El sistema debe permitir a los usuarios
* tomar prestados y devolver libros.
* Instrucciones:
* 1. Diseña una clase que no cumple el SRP: Crea una clase Library que maneje
* los tres aspectos mencionados anteriormente (registro de libros, registro de
* usuarios y procesamiento de préstamos).
* 2. Refactoriza el código: Separa las responsabilidades en diferentes clases
* siguiendo el Principio de Responsabilidad Única.
*/
```
#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**.

Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras.

> Recuerda que cada semana se publica un nuevo ejercicio y se corrige el de la semana anterior en directo desde **[Twitch](https://twitch.tv/mouredev)**. Tienes el horario en la sección "eventos" del servidor de **[Discord](https://discord.gg/mouredev)**.

0 comments on commit 84aa2b6

Please sign in to comment.