Skip to content

Commit 4720aa6

Browse files
authored
Merge pull request mouredev#6318 from danielhdzr/main
#19 - Python
2 parents bb453fc + 6af7061 commit 4720aa6

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
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

Comments
 (0)