Skip to content

Commit 11de655

Browse files
authored
Merge pull request mouredev#5496 from pyramsd/reto#26
#26 - python
2 parents 652a189 + e7841b6 commit 11de655

File tree

1 file changed

+186
-0
lines changed

1 file changed

+186
-0
lines changed
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
# USO CORRECTO
2+
class Order:
3+
def __init__(self, order_id, items):
4+
self.order_id = order_id
5+
self.items = items
6+
7+
def calculate_total(self):
8+
total = sum(item.price for item in self.items)
9+
return total
10+
11+
class OrderRepository:
12+
def save(self, order):
13+
# Código para guardar la orden en la base de datos
14+
pass
15+
16+
class OrderEmailer:
17+
def send_confirmation_email(self, order):
18+
# Código para enviar un email de confirmación al cliente
19+
pass
20+
21+
22+
class Items:
23+
def __init__(self, name: str, price: int) -> None:
24+
self.name: str = name
25+
self.price: str = price
26+
27+
item1 = Items("Agenda", 20)
28+
item2 = Items("Libro", 10)
29+
item3 = Items("Cuaderno", 30)
30+
31+
order = Order(order_id=1, items=[item1, item2, item3])
32+
33+
total = order.calculate_total()
34+
print(total)
35+
36+
order_repo = OrderRepository()
37+
order_repo.save(order)
38+
39+
emalier = OrderEmailer()
40+
emalier.send_confirmation_email(order)
41+
42+
# USO INCORRECTO
43+
class Order:
44+
def __init__(self, order_id, items):
45+
self.order_id = order_id
46+
self.items = items
47+
48+
def calculate_total(self):
49+
total = sum(item.price for item in self.items)
50+
return total
51+
52+
def save_to_database(self):
53+
# Código para guardar la orden en la base de datos
54+
pass
55+
56+
def send_confirmation_email(self):
57+
# Código para enviar un email de confirmación al cliente
58+
pass
59+
60+
61+
"""
62+
EXTRA
63+
"""
64+
# USO INCORRECTO
65+
class Library:
66+
def __init__(self) -> None:
67+
self.libros: list[dict] = []
68+
self.usuarios: list[dict] = []
69+
self.prestamos: dict = {}
70+
71+
72+
def registrar_libros(self, titulo: str, autor: str, copias: int) -> None:
73+
libro = {"Titulo":titulo, "Autor":autor, "Copias":copias}
74+
self.libros.append(libro)
75+
76+
def registrar_usuario(self, nombre: str, user_id: int, email: str) -> None:
77+
usuario = {"Nombre":nombre, "ID":user_id, "Email":email}
78+
self.usuarios.append(usuario)
79+
80+
def prestar_libro(self, user_id: int, titulo_libro: str) -> bool:
81+
for libro in self.libros:
82+
if libro["Titulo"] == titulo_libro and libro["Copias"] > 0:
83+
self.prestamos[user_id] = titulo_libro
84+
libro["Copias"] -= 1
85+
return True
86+
return False
87+
88+
def devolver_libro(self, user_id: int) -> bool:
89+
if user_id in self.prestamos:
90+
titulo_libro = self.prestamos.pop(user_id)
91+
for libro in self.libros:
92+
if libro["Titulo"] == titulo_libro:
93+
libro["Copias"] += 1
94+
return True
95+
return False
96+
97+
98+
libreria = Library()
99+
libreria.registrar_libros("La pata del pato", "Sergio Ruiz", 10)
100+
libreria.registrar_usuario("Maicol", 5, "maicol@gmail.com")
101+
print(libreria.libros)
102+
libreria.prestar_libro(5, "La pata del pato")
103+
print(libreria.libros)
104+
print(libreria.usuarios)
105+
print(libreria.prestamos)
106+
libreria.devolver_libro(5)
107+
print(libreria.libros)
108+
109+
110+
# USO CORRECTO
111+
class Libro:
112+
def __init__(self) -> None:
113+
self.libros: dict = {}
114+
115+
def registrar_libro(self, titulo: str, autor: str, copias: int):
116+
if titulo in self.libros:
117+
print(f"Titulo {titulo} ya existe")
118+
return
119+
self.libros[titulo] = {"Autor": autor,
120+
"Copias": copias}
121+
print(f"Titulo {titulo} fue agregado correctamente")
122+
123+
def buscar_libro(self, titulo: str):
124+
for titulos, libro in self.libros.items():
125+
if titulos == titulo:
126+
return titulos, libro
127+
print(f"Titulo {titulo} no fue encontrado")
128+
129+
130+
class User:
131+
def __init__(self) -> None:
132+
self.usuarios = {}
133+
134+
def registrar_usuario(self, nombre: str, id: int, email: str):
135+
if nombre in self.usuarios:
136+
print(f"Usuario {nombre} ya se encuentra registrado")
137+
return
138+
139+
self.usuarios[id] = {"nombre": nombre, "Correo": email}
140+
print(f"Usuario {nombre} fue agregado correctamente")
141+
142+
def buscar_usuario(self , id: int):
143+
for ids, user in self.usuarios.items():
144+
if ids == id:
145+
return ids, user
146+
print(f"Identificador {id} no fue encontrado")
147+
148+
class LibraryManager:
149+
def __init__(self, book_manager, user_manager) -> None:
150+
self.list_loans = {}
151+
self.book_manager = book_manager
152+
self.user_manager = user_manager
153+
154+
def prestamo(self, id, titulos):
155+
libro = self.book_manager.buscar_libro(titulos)
156+
usuario = self.user_manager.buscar_usuario(id)
157+
if usuario and libro and libro[1]['Copias'] > 0:
158+
self.list_loans[id] = titulos
159+
libro[1]['Copias'] -= 1
160+
print(f"Libro {titulos} fue prestado al dni {id} y quedan {libro[1]['Copias']} disponibles")
161+
return
162+
print(f"Ha ocurrido un error")
163+
164+
def retornar(self, id, titulo):
165+
for ids, titles in self.list_loans.items():
166+
if ids == id and titles == titulo:
167+
del self.list_loans[id]
168+
book = self.book_manager.buscar_libro(titulo)
169+
if book:
170+
book[1]['Copias']+=1
171+
print(f"Libro {titulo} fue devuelto por el id {id}, quedan {book[1]['Copias']} disponibles")
172+
return
173+
print(f"Ha ocurrido un error al retornar el libro")
174+
book_manager = Libro()
175+
book_manager.registrar_libro("La culpa es de la vaca", "Jaime Lopera", 15)
176+
book_manager.registrar_libro("El programador pragmatico", "Andrew Hunt", 20)
177+
178+
user_manager = User()
179+
user_manager.registrar_usuario("alan", 123456, "alan2085@gmail.com")
180+
user_manager.registrar_usuario("matheo", 852963, "matheo0301@gmail.com")
181+
182+
library_manager = LibraryManager(book_manager, user_manager)
183+
library_manager.prestamo(123456, "El programador pragmatico")
184+
library_manager.prestamo(852963, "El programador pragmatico")
185+
library_manager.retornar(123456, "El programador pragmatico")
186+
library_manager.retornar(852963, "El programador pragmatico")

0 commit comments

Comments
 (0)