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+ by adra-dev
24+ """
25+
26+ from enum import Enum
27+
28+ class day_of_week (Enum ):
29+ MONDAY = 1
30+ TUESDAY = 2
31+ WEDNESDAY = 3
32+ THURSDAY = 4
33+ FRIDAY = 5
34+ SATURDAY = 6
35+ SUNDAY = 7
36+
37+
38+ def get_day (number :int ):
39+ print (day_of_week (number ).name )
40+
41+
42+ get_day (1 )
43+ get_day (5 )
44+
45+
46+ """
47+ Extra
48+ """
49+
50+
51+ class OrderStatus (Enum ):
52+ PENDING = 1
53+ SHIPPED = 2
54+ DELIVERED = 3
55+ CANCELED = 4
56+
57+
58+ class Order :
59+
60+ status = OrderStatus .PENDING
61+
62+ def __init__ (self , id ) -> None :
63+ self .id = id
64+
65+ def ship (self ):
66+ if self .status == OrderStatus .PENDING :
67+ self .status = OrderStatus .SHIPPED
68+ self .display_status ()
69+ else :
70+ print ("El pedido ya ha sido enviado o cancelado" )
71+
72+ def deliver (self ):
73+ if self .status == OrderStatus .SHIPPED :
74+ self .status = OrderStatus .DELIVERED
75+ self .display_status ()
76+ else :
77+ print ("El pedido necesita ser enviado antes de entregarse." )
78+
79+ def cancel (self ):
80+ if self .status != OrderStatus .DELIVERED :
81+ self .status = OrderStatus .CANCELLED
82+ self .display_status ()
83+ else :
84+ print ("El pedido no se puede cancelar ya que ya se ha entregado." )
85+
86+ def display_status (self ):
87+ print (f"El estado del pedido { self .id } es { self .status .name } " )
88+
89+
90+ order_1 = Order (1 )
91+ order_1 .display_status ()
92+ order_1 .deliver ()
93+ order_1 .ship ()
94+ order_1 .deliver ()
95+ order_1 .cancel ()
0 commit comments