1+ # #19 ENUMERACIONES
2+ #### Dificultad: Media | Publicación: 06/05/24 | Corrección: 13/05/24
3+
4+ ## Ejercicio
5+
6+ '''
7+ * EJERCICIO:
8+ * Empleando tu lenguaje, explora la definición del tipo de dato
9+ * que sirva para definir enumeraciones (Enum).
10+ * Crea un Enum que represente los días de la semana del lunes
11+ * al domingo, en ese orden. Con ese enumerado, crea una operación
12+ * que muestre el nombre del día de la semana dependiendo del número entero
13+ * utilizado (del 1 al 7).
14+ *
15+ * DIFICULTAD EXTRA (opcional):
16+ * Crea un pequeño sistema de gestión del estado de pedidos.
17+ * Implementa una clase que defina un pedido con las siguientes características:
18+ * - El pedido tiene un identificador y un estado.
19+ * - El estado es un Enum con estos valores: PENDIENTE, ENVIADO, ENTREGADO y CANCELADO.
20+ * - Implementa las funciones que sirvan para modificar el estado:
21+ * - Pedido enviado
22+ * - Pedido cancelado
23+ * - Pedido entregado
24+ * (Establece una lógica, por ejemplo, no se puede entregar si no se ha enviado, etc...)
25+ * - Implementa una función para mostrar un texto descriptivo según el estado actual.
26+ * - Crea diferentes pedidos y muestra cómo se interactúa con ellos.
27+ '''
28+
29+ from enum import Enum
30+
31+ class weekday (Enum ):
32+ LUNES = 1
33+ MARTES = 2
34+ MIERCOLES = 3
35+ JUEVES = 4
36+ VIERNES = 5
37+ SABADO = 6
38+ DOMINGO = 7
39+
40+ def get_day (number : int ):
41+ print (weekday (number ).name )
42+
43+ get_day (1 )
44+ get_day (5 )
45+ print ("**********************************" )
46+
47+ # Estado del pedido
48+ class estado (Enum ):
49+ PENDIENTE = 1 # name.value
50+ ENVIADO = 2
51+ ENTREGADO = 3
52+ CANCELADO = 4
53+
54+ # Clase para la orden
55+ class Order :
56+ # Estado predeterminado
57+ status_envio = estado .PENDIENTE
58+
59+ def __init__ (self , id ) -> None :
60+ self .id = id
61+
62+ def ship (self ):
63+ if self .status_envio == estado .PENDIENTE : # si status de envio es pendiente cambia
64+ self .status_envio = estado .ENVIADO # cambia a enviado
65+ self .display_status () # muestra el estado del pedido
66+ else : # si no es pendiente, imprime mensaje
67+ print ("El pedido ya ha sido enviado o cancelado" )
68+
69+ def deliver (self ):
70+ if self .status_envio == estado .ENVIADO :
71+ self .status_envio = estado .ENTREGADO
72+ self .display_status ()
73+ else :
74+ print ("El pedido necesita ser enviado antes de entregarse." )
75+
76+ def cancel (self ):
77+ if self .status_envio != estado .ENTREGADO :
78+ self .status_envio = estado .CANCELADO
79+ self .display_status ()
80+ else :
81+ print ("El pedido no se puede cancelar ya que ya se ha entregado." )
82+
83+ def display_status (self ):
84+ print (f"El estado del pedido { self .id } es { self .status_envio .name } " )
85+
86+
87+ order_1 = Order (1 )
88+ order_1 .display_status ()
89+ order_1 .deliver ()
90+ order_1 .ship ()
91+ order_1 .deliver ()
92+ order_1 .cancel ()
0 commit comments