Skip to content

Commit 5cf93d2

Browse files
committed
mouredev#21 - Python
1 parent a173941 commit 5cf93d2

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
"""
2+
Explora el concepto de callback en tu lenguaje creando un ejemplo
3+
simple (a tu elección) que muestre su funcionamiento.
4+
"""
5+
6+
import random
7+
import time
8+
9+
10+
def saludar(nombre):
11+
print(f"Hola {nombre}")
12+
13+
14+
def EntradaUsuario(callback):
15+
nombre = input("Ingresa tu nombre: ")
16+
callback(nombre)
17+
18+
19+
EntradaUsuario(saludar)
20+
21+
"""DIFICULTAD EXTRA (opcional):
22+
Crea un simulador de pedidos de un restaurante utilizando callbacks.
23+
Estará formado por una función que procesa pedidos.
24+
- Debe aceptar el nombre del plato, una callback de confirmación, una de listo y otra de entrega.
25+
- Debe imprimir un confirmación cuando empiece el procesamiento.
26+
- Debe simular un tiempo aleatorio entre 1 a 10 segundos entre procesos.
27+
- Debe invocar a cada callback siguiendo un orden de procesado.
28+
- Debe notificar que el plato está listo o ha sido entregado.
29+
"""
30+
31+
32+
# Definir las funciones callback
33+
34+
def confirm(dish):
35+
print(f"Pedido confirmado: {dish}")
36+
37+
38+
def ready(dish):
39+
print(f"Plato listo: {dish}")
40+
41+
42+
def deliver(dish):
43+
print(f"Pedido entregado: {dish}")
44+
45+
# Función que procesa los pedidos
46+
47+
48+
def process(dish, confirm, ready, deliver):
49+
# Confirmar el pedido
50+
confirm(dish)
51+
52+
# Simula el tiempo de preparación
53+
prep_time = random.randint(1, 10)
54+
time.sleep(prep_time)
55+
ready(dish)
56+
57+
# Simula el tiempo de entrega
58+
delivery_time = random.randint(1, 10)
59+
time.sleep(delivery_time)
60+
deliver(dish)
61+
62+
63+
# Simular el procesamiento de un pedido
64+
dish = input("¿Que desea ordenar? ")
65+
process(dish, confirm, ready, deliver)

0 commit comments

Comments
 (0)