Skip to content

Commit 3e9d191

Browse files
committed
#19 - Python
1 parent a347848 commit 3e9d191

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
"""
2+
* EJERCICIO:
3+
* Empleando tu lenguaje, explora la definición del tipo de dato
4+
* que sirva para definir enumeraciones (Enum).
5+
* Crea un Enum que represente los días de la semana del lunes
6+
* al domingo, en ese orden. Con ese enumerado, crea una operación
7+
* que muestre el nombre del día de la semana dependiendo del número entero
8+
* utilizado (del 1 al 7).
9+
*
10+
* DIFICULTAD EXTRA (opcional):
11+
* Crea un pequeño sistema de gestión del estado de pedidos.
12+
* Implementa una clase que defina un pedido con las siguientes características:
13+
* - El pedido tiene un identificador y un estado.
14+
* - El estado es un Enum con estos valores: PENDIENTE, ENVIADO, ENTREGADO y CANCELADO.
15+
* - Implementa las funciones que sirvan para modificar el estado:
16+
* - Pedido enviado
17+
* - Pedido cancelado
18+
* - Pedido entregado
19+
* (Establece una lógica, por ejemplo, no se puede entregar si no se ha enviado, etc...)
20+
* - Implementa una función para mostrar un texto descriptivo según el estado actual.
21+
* - Crea diferentes pedidos y muestra cómo se interactúa con ellos.
22+
"""
23+
24+
from enum import Enum
25+
26+
class WeekDays(Enum):
27+
MONDAY = 1
28+
TUESDAY = 2
29+
WEDNESDAY = 3
30+
THURSDAY = 4
31+
FRIDAY = 5
32+
SATURDAY = 6
33+
SUNDAY = 7
34+
35+
def day_name(num):
36+
try:
37+
day = WeekDays(num)
38+
return day.name.capitalize()
39+
except ValueError:
40+
return "Numero del dia invalido"
41+
42+
print(day_name(4))
43+
print(day_name(1))
44+
print(day_name(7))
45+
print(day_name(8))
46+
47+
######## ----------------------------------- EXTRA ------------------------------------- ################
48+
49+
class OrderState(Enum):
50+
PENDIENTE = 1
51+
ENVIADO = 2
52+
ENTREGADO = 3
53+
CANCELADO = 4
54+
55+
class Pedido:
56+
57+
def __init__(self, identificador, estado):
58+
self.identificador = identificador
59+
self.estado = estado
60+
61+
def upgrade_state(self, new_state):
62+
if new_state in OrderState:
63+
self.estado = new_state
64+
print(f"El estado del pedido {self.identificador} ha sido actualizado a {self.estado.name}")
65+
else:
66+
print(f"El pedido {self.identificador} no se pudo enviar.")
67+
68+
def send_order(self):
69+
if self.estado == OrderState.PENDIENTE:
70+
self.upgrade_state(OrderState.ENVIADO)
71+
else:
72+
print("El pedido no se pudo enviar porque no esta pendiente")
73+
74+
def order_delivered(self):
75+
if self.estado == OrderState.ENVIADO:
76+
self.upgrade_state(OrderState.ENTREGADO)
77+
else:
78+
print(f"El pedido {self.identificador} no se pudo marcar como entregado porque no fue enviado aun")
79+
80+
def cancel_order(self):
81+
if self.estado != OrderState.CANCELADO or self.estado != OrderState.ENTREGADO:
82+
self.upgrade_state(OrderState.CANCELADO)
83+
else:
84+
print("El pedido ya esta cancelado")
85+
86+
87+
88+
pedido1 = Pedido(identificador=3, estado=OrderState.PENDIENTE)
89+
90+
pedido1.send_order()
91+
print(f"El pedido {pedido1.identificador}: Estado - {pedido1.estado.name}")
92+
93+
pedido1.cancel_order()
94+
print(f"El pedido {pedido1.identificador}: Estado - {pedido1.estado.name}")
95+
96+
pedido1.order_delivered()
97+
print(f"El pedido {pedido1.identificador}: Estado - {pedido1.estado.name}")
98+
99+
pedido1.cancel_order()
100+
pedido1.order_delivered()

0 commit comments

Comments
 (0)