Skip to content

Commit 84aa2b6

Browse files
committed
Corrección Roadmap 25 + Nuevo ejercicio 26
1 parent 382a6c8 commit 84aa2b6

File tree

3 files changed

+116
-3
lines changed

3 files changed

+116
-3
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
2828
## Corrección y próximo ejercicio
2929

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

@@ -59,7 +59,8 @@
5959
|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/)
6060
|23|[SINGLETON](./Roadmap/23%20-%20SINGLETON/ejercicio.md)|[📝](./Roadmap/23%20-%20SINGLETON/python/mouredev.py)|[▶️](https://youtu.be/cOIcFo_w9hA)|[👥](./Roadmap/23%20-%20SINGLETON/)
6161
|24|[DECORADORES](./Roadmap/24%20-%20DECORADORES/ejercicio.md)|[📝](./Roadmap/24%20-%20DECORADORES/python/mouredev.py)|[▶️](https://youtu.be/jxJOjg7gPG4)|[👥](./Roadmap/24%20-%20DECORADORES/)
62-
|25|[LOGS](./Roadmap/25%20-%20LOGS/ejercicio.md)|[🗓️ 24/06/24](https://discord.gg/EWMJPcUq?event=1249918242370355262)||[👥](./Roadmap/25%20-%20LOGS/)
62+
|25|[LOGS](./Roadmap/25%20-%20LOGS/ejercicio.md)|[📝](./Roadmap/25%20-%20LOGS/python/mouredev.py)||[👥](./Roadmap/25%20-%20LOGS/)
63+
|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/)
6364

6465
## Instrucciones
6566

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import logging
2+
import time
3+
4+
"""
5+
Ejercicio
6+
"""
7+
8+
logging.basicConfig(level=logging.DEBUG,
9+
format="%(asctime)s - %(levelname)s - %(message)s",
10+
handlers=[logging.StreamHandler()])
11+
12+
logging.debug("Esto es un mensaje de DEBUG")
13+
logging.info("Esto es un mensaje de INFO")
14+
logging.warning("Esto es un mensaje de WARNING")
15+
logging.error("Esto es un mensaje de ERROR")
16+
logging.critical("Esto es un mensaje de CRITICAL")
17+
18+
"""
19+
Extra
20+
"""
21+
22+
23+
class TaskManager:
24+
25+
def __init__(self) -> None:
26+
self.tasks = {}
27+
28+
def add_task(self, name: str, description: str):
29+
start_time = time.time()
30+
if name not in self.tasks:
31+
self.tasks[name] = description
32+
logging.info(f"Tarea añadida: {name}.")
33+
else:
34+
logging.warning(
35+
f"Se ha intentado añadir una tarea que ya existe: {name}.")
36+
logging.debug(f"Número de tareas: {len(self.tasks)}")
37+
end_time = time.time()
38+
self._print_time(start_time, end_time)
39+
40+
def delete_task(self, name: str):
41+
start_time = time.time()
42+
if name in self.tasks:
43+
del self.tasks[name]
44+
logging.info(f"Se la eliminado la tarea: {name}.")
45+
else:
46+
logging.error(
47+
f"Se ha intentado eliminar una tarea que no exsite: {name}.")
48+
logging.debug(f"Número de tareas: {len(self.tasks)}")
49+
end_time = time.time()
50+
self._print_time(start_time, end_time)
51+
52+
def list_tasks(self):
53+
start_time = time.time()
54+
if self.tasks:
55+
logging.info(f"Se va a imprimir la lista de tareas.")
56+
for name, description in self.tasks.items():
57+
print(f"{name} - {description}")
58+
else:
59+
logging.info("No hay tareas para mostar.")
60+
end_time = time.time()
61+
self._print_time(start_time, end_time)
62+
63+
def _print_time(self, start_time, end_time):
64+
logging.debug(
65+
f"Tiempo de ejecución: {end_time - start_time:.6f} segundos.")
66+
67+
68+
task_manager = TaskManager()
69+
task_manager.list_tasks()
70+
task_manager.add_task("Pan", "Comprar 5 barras de pan")
71+
task_manager.add_task("Python", "Estudiar Python")
72+
task_manager.list_tasks()
73+
task_manager.delete_task("Python")
74+
task_manager.list_tasks()
75+
task_manager.add_task("Pan", "Comprar 5 barras de pan")
76+
task_manager.delete_task("Python")
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# #26 SOLID: PRINCIPIO DE RESPONSABILIDAD ÚNICA (SRP)
2+
> #### Dificultad: Media | Publicación: 24/06/24 | Corrección: 01/07/24
3+
4+
## Ejercicio
5+
6+
```
7+
/*
8+
* EJERCICIO:
9+
* Explora el "Principio SOLID de Responsabilidad Única (Single Responsibility
10+
* Principle, SRP)" y crea un ejemplo simple donde se muestre su funcionamiento
11+
* de forma correcta e incorrecta.
12+
*
13+
* DIFICULTAD EXTRA (opcional):
14+
* Desarrolla un sistema de gestión para una biblioteca. El sistema necesita
15+
* manejar diferentes aspectos como el registro de libros, la gestión de usuarios
16+
* y el procesamiento de préstamos de libros.
17+
* Requisitos:
18+
* 1. Registrar libros: El sistema debe permitir agregar nuevos libros con
19+
* información básica como título, autor y número de copias disponibles.
20+
* 2. Registrar usuarios: El sistema debe permitir agregar nuevos usuarios con
21+
* información básica como nombre, número de identificación y correo electrónico.
22+
* 3. Procesar préstamos de libros: El sistema debe permitir a los usuarios
23+
* tomar prestados y devolver libros.
24+
* Instrucciones:
25+
* 1. Diseña una clase que no cumple el SRP: Crea una clase Library que maneje
26+
* los tres aspectos mencionados anteriormente (registro de libros, registro de
27+
* usuarios y procesamiento de préstamos).
28+
* 2. Refactoriza el código: Separa las responsabilidades en diferentes clases
29+
* siguiendo el Principio de Responsabilidad Única.
30+
*/
31+
```
32+
#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**.
33+
34+
Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras.
35+
36+
> 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 commit comments

Comments
 (0)