1+ """
2+ EJERCICIO:
3+ Explora el concepto de callback en tu lenguaje creando un ejemplo
4+ simple (a tu elección) que muestre su funcionamiento.
5+
6+ DIFICULTAD EXTRA (opcional):
7+ Crea un simulador de pedidos de un restaurante utilizando callbacks.
8+ Estará formado por una función que procesa pedidos.
9+ Debe aceptar el nombre del plato, una callback de confirmación, una
10+ de listo y otra de entrega.
11+ - Debe imprimir un confirmación cuando empiece el procesamiento.
12+ - Debe simular un tiempo aleatorio entre 1 a 10 segundos entre
13+ procesos.
14+ - Debe invocar a cada callback siguiendo un orden de procesado.
15+ - Debe notificar que el plato está listo o ha sido entregado.
16+
17+ by adra-dev
18+ """
19+
20+ """
21+ CALLBACKS:
22+ Un callback es un concepto general en Python como en otros
23+ lenguajes como Javascript, C, etc. Como sabemos Pyton es un
24+ lenguaje orientado a objetos y las funciones en python son
25+ ciudadanos de primer orden. Esto significa que podemos asignar
26+ el valor devuelto por una funcion a una variable y devolver el
27+ resultado de una funcion llamandola desde el interior de otra.
28+ documentacion: https://www.askpython.com/python/built-in-methods/callback-functions-in-python
29+ """
30+
31+ """
32+ Se desea mostrar un mensaje que muestre si un alumno aprobo el curso
33+ o no segun su promedio
34+ """
35+
36+ # Definimos la funcion promedio
37+
38+ promedio = lambda * args : sum (args ) / len (args )
39+
40+ # definimos la condicion de si el promedio es aprobatorio o no
41+ aprobatorio = lambda calificacion : calificacion >= 7
42+
43+ # Definimos la funcion mostrar mensaje que va llamar a las otras 2 funciones como argumentos
44+ def mostrar_mensaje (func_promedio , func_aporbatorio , * args ):
45+ promedio = func_promedio (* args )
46+
47+ if func_aporbatorio (promedio ):
48+ print (f'Felicidades, aprobaste la materia con { promedio } .' )
49+ else :
50+ print ('No aprobaste la materia.' )
51+
52+ mostrar_mensaje (promedio , aprobatorio , 10 , 10 , 8 , 7 , 7 )
53+ mostrar_mensaje (promedio , aprobatorio , 0 , 2 , 5 , 6 , 9 , 3 )
54+
55+ """
56+ EXTRA
57+ """
58+ import random
59+ import time
60+ import threading
61+
62+
63+
64+ def order_process (dish_name : str , confirm_callback , ready_callback , delivered_callback ):
65+ def process ():
66+ confirm_order (dish_name )
67+ time .sleep (random .randint (1 ,10 ))
68+ order_ready (dish_name )
69+ time .sleep (random .randint (1 ,10 ))
70+ order_delivered (dish_name )
71+
72+
73+ threading .Thread (target = process ).start ()
74+
75+
76+ def confirm_order (dish_name : str ):
77+ print (f"Tu pedido { dish_name } ha sido confirmado." )
78+
79+
80+ def order_ready (dish_name : str ):
81+ print (f"Tu pedido { dish_name } esta listo." )
82+
83+
84+ def order_delivered (dish_name : str ):
85+ print (f"Tu pedido { dish_name } ha sido entregado." )
86+
87+
88+ order_process ("Pizza Barbacoa" , confirm_order , order_ready , order_delivered )
89+ order_process ("Pizza 4 Quesos" , confirm_order , order_ready , order_delivered )
90+ order_process ("Pizza Margarita" , confirm_order , order_ready , order_delivered )
91+ order_process ("Pizza Pepperoni" , confirm_order , order_ready , order_delivered )
0 commit comments