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