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