Skip to content

Commit 455009c

Browse files
authored
Merge pull request mouredev#7637 from davidrguez98/main
#25 - Python
2 parents bba6735 + 3b2c4c0 commit 455009c

File tree

2 files changed

+198
-0
lines changed

2 files changed

+198
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
""" /*
2+
* EJERCICIO:
3+
* Explora el concepto de "logging" en tu lenguaje. Configúralo y muestra
4+
* un ejemplo con cada nivel de "severidad" disponible.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Crea un programa ficticio de gestión de tareas que permita añadir, eliminar
8+
* y listar dichas tareas.
9+
* - Añadir: recibe nombre y descripción.
10+
* - Eliminar: por nombre de la tarea.
11+
* Implementa diferentes mensajes de log que muestren información según la
12+
* tarea ejecutada (a tu elección).
13+
* Utiliza el log para visualizar el tiempo de ejecución de cada tarea.
14+
*/ """
15+
16+
#EJERCICIO
17+
18+
import logging
19+
20+
logging.debug("Esto es un mensaje de debug")
21+
logging.info("Esto es un mensaje de información")
22+
logging.warning("Esto es un mensaje de warning")
23+
logging.error("Esto es un mensaje de error")
24+
logging.critical("Esto es un mensaje critico")
25+
26+
#DIFICULTAD EXTRA
27+
28+
logging.basicConfig(level=logging.INFO, format="\n%(levelname)s: %(message)s")
29+
30+
class TaskManager:
31+
32+
def __init__(self):
33+
self.tasks = {}
34+
35+
def new_task(self, name: str, description: str):
36+
if name not in self.tasks:
37+
self.tasks[name] = description
38+
logging.info(f"La tarea {name} ha sido añadida.")
39+
elif name in self.tasks:
40+
logging.error(f"La tarea {name} ya estaba añadida a la lista de tareas.")
41+
else:
42+
print("La tarea no ha podido ser creada.")
43+
logging.debug(f"Error al añadir la tarea {name}.")
44+
45+
def delete_task(self, name):
46+
if name in self.tasks:
47+
del self.tasks[name]
48+
logging.info(f"La tarea {name} ha sido eliminada")
49+
elif name not in self.tasks:
50+
logging.error(f"La tarea {name} no existe.")
51+
else:
52+
print("La tarea no ha podido ser eliminada.")
53+
logging.debug(f"Error al eliminar la tarea {name}.")
54+
55+
def list_tasks(self):
56+
if self.tasks:
57+
print("\nLISTADO DE TAREAS:\n")
58+
for name, description in self.tasks.items():
59+
print(f"{name}: {description}")
60+
else:
61+
print("La lista de tarea no ha podido ser mostrada.")
62+
logging.debug(f"Error al visualizar la lista de tareas.")
63+
64+
65+
task_manager = TaskManager()
66+
task_manager.new_task("Pan", "Comprar una barra de pan integral")
67+
task_manager.new_task("Pan", "Comprar una barra de pan integral")
68+
task_manager.new_task("Ejercicio", "Hacer 30 minutos de yoga")
69+
task_manager.new_task("Estudio", "Repasar conceptos básicos de React")
70+
task_manager.new_task("Trabajo", "Enviar el informe mensual al supervisor")
71+
task_manager.new_task("Cita médica", "Pedir cita para revisión anual")
72+
task_manager.new_task("Tomates", "Comprar 6 tomates")
73+
task_manager.list_tasks()
74+
task_manager.delete_task("Estudio")
75+
task_manager.delete_task("Cebolla")
76+
task_manager.list_tasks()
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
""" /*
2+
* EJERCICIO:
3+
* Explora el "Principio SOLID de Responsabilidad Única (Single Responsibility
4+
* Principle, SRP)" y crea un ejemplo simple donde se muestre su funcionamiento
5+
* de forma correcta e incorrecta.
6+
*
7+
* DIFICULTAD EXTRA (opcional):
8+
* Desarrolla un sistema de gestión para una biblioteca. El sistema necesita
9+
* manejar diferentes aspectos como el registro de libros, la gestión de usuarios
10+
* y el procesamiento de préstamos de libros.
11+
* Requisitos:
12+
* 1. Registrar libros: El sistema debe permitir agregar nuevos libros con
13+
* información básica como título, autor y número de copias disponibles.
14+
* 2. Registrar usuarios: El sistema debe permitir agregar nuevos usuarios con
15+
* información básica como nombre, número de identificación y correo electrónico.
16+
* 3. Procesar préstamos de libros: El sistema debe permitir a los usuarios
17+
* tomar prestados y devolver libros.
18+
* Instrucciones:
19+
* 1. Diseña una clase que no cumple el SRP: Crea una clase Library que maneje
20+
* los tres aspectos mencionados anteriormente (registro de libros, registro de
21+
* usuarios y procesamiento de préstamos).
22+
* 2. Refactoriza el código: Separa las responsabilidades en diferentes clases
23+
* siguiendo el Principio de Responsabilidad Única.
24+
*/ """
25+
26+
#EJERCICIO
27+
28+
#Forma incorrecta
29+
30+
class User:
31+
32+
def __init__(self, name, email):
33+
self.name = name
34+
self.email = email
35+
36+
def save_to_database(self):
37+
pass
38+
39+
def send_email(self):
40+
pass
41+
42+
#Forma correcta
43+
44+
class User:
45+
46+
def __init__(self, name, email):
47+
self.name = name
48+
self.email = email
49+
50+
class UserService:
51+
52+
def save_to_database(self, user):
53+
pass
54+
55+
class EmailService:
56+
57+
def send_email(self, email, message):
58+
pass
59+
60+
#DIFICULTAD EXTRA
61+
62+
class Book:
63+
64+
def __init__(self, title, author, copies):
65+
self.title = title
66+
self.author = author
67+
self.copies = copies
68+
69+
class User:
70+
71+
def __init__(self, name, id, email):
72+
self.name = name
73+
self.id = id
74+
self.email = email
75+
76+
class Loan:
77+
78+
def __init__(self):
79+
self.loans = []
80+
81+
def loan_book(self, user, book):
82+
if book.copies > 0:
83+
book.copies -= 1
84+
self.loans.append({"user_id": user.id, "book_title": book.title})
85+
return True
86+
return False
87+
88+
def return_book(self, user, book):
89+
for loan in self.loans:
90+
if loan["user_id"] == user.id and loan["book_title"] == book.title:
91+
self.loans.remove(loan)
92+
book.copies += 1
93+
return True
94+
return False
95+
96+
class library:
97+
98+
def __init__(self):
99+
self.books = []
100+
self.users = []
101+
self.loans = Loan()
102+
103+
def new_book(self, book):
104+
self.books.append(book)
105+
106+
def new_user(self, user):
107+
self.users.append(user)
108+
109+
def loan_book(self, user_id, book_title):
110+
user = next((u for u in self.users if u.id == user_id), None)
111+
book = next((b for b in self.books if b.title == book_title), None)
112+
if user in book:
113+
return self.loan_book(user, book)
114+
return False
115+
116+
117+
def return_book(self, user_id, book_title):
118+
user = next((u for u in self.users if u.id == user_id), None)
119+
book = next((b for b in self.books if b.title == book_title), None)
120+
if user and book:
121+
return self.return_book(user, book)
122+
return False

0 commit comments

Comments
 (0)