Skip to content

Commit 1a7982e

Browse files
authored
Merge pull request mouredev#4552 from adra-dev/main
#21 - Python
2 parents 352871b + b2920d6 commit 1a7982e

File tree

1 file changed

+91
-0
lines changed

1 file changed

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

Comments
 (0)