Skip to content

Commit bede897

Browse files
committed
feat: #22-Python
Reto #22-Python realizado por mrodara
1 parent a7866b8 commit bede897

File tree

2 files changed

+128
-4
lines changed

2 files changed

+128
-4
lines changed

Roadmap/21 - CALLBACKS/python/mrodara.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@ async def order_delivered(plate_name: str) -> None:
4040
# Función principal
4141
async def procesar_pedido(plate_name: str, cb_confirmed, cb_ready, cb_delivered) -> None:
4242
print(f"Procesando pedido de {plate_name}...")
43-
await asyncio.sleep(1)
43+
#await asyncio.sleep(1)
4444
await cb_confirmed(plate_name)
45-
await asyncio.sleep(1)
45+
#await asyncio.sleep(1)
4646
await cb_ready(plate_name)
47-
await asyncio.sleep(1)
47+
#await asyncio.sleep(1)
4848
await cb_delivered(plate_name)
49-
await asyncio.sleep(1)
49+
#await asyncio.sleep(1)
5050
print(f"Pedido de {plate_name} procesado.")
5151

5252
# Ejecución asíncrona
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
### FUNCIONES DE ORDEN SUPERIOR EN PYTHON
2+
3+
'''
4+
Una función de orden superior es aquella que:
5+
Acepta una función como argumento.
6+
Devuelve otra función como resultado.
7+
O ambas cosas.
8+
'''
9+
10+
# Ejemplo de función que acepta otra como argumento:
11+
def calculator(x: float, y: float, operation) -> float:
12+
return operation(x, y)
13+
14+
def sum(a: float, b: float) -> float:
15+
return a + b
16+
17+
def product(a: float, b: float) -> float:
18+
return a * b
19+
20+
print(calculator(10,20, sum)) # Salida 30
21+
print(calculator(10,20, product)) # Salida 200
22+
23+
# Ejemplo devolviendo otra función como resultado (lambda):
24+
def new_calculator(operation):
25+
if operation.lower() == "sum":
26+
return lambda a, b: a + b
27+
elif operation.lower() == "product":
28+
return lambda a, b: a * b
29+
else:
30+
return lambda a, b: None
31+
32+
my_sum = new_calculator("sum")
33+
my_product = new_calculator("product")
34+
35+
print(my_sum(5,5)) # Salida 10
36+
print(my_product(5,5)) # Salida 25
37+
38+
# Python ofrece varias funciones de orden superior predefinidas, como map, filter, y reduce.
39+
40+
my_list = [i for i in range(1,11)]
41+
42+
square = map(lambda x: x**2, my_list)
43+
print(list(square))
44+
45+
pairs = filter(lambda x: x%2 == 0, my_list)
46+
47+
print(list(pairs))
48+
49+
# Para reduce necesitamos importar functools
50+
from functools import reduce
51+
52+
sum = reduce(lambda x, y: x + y, my_list)
53+
print(sum) # Salida 55
54+
55+
### EJERCICIO EXTRA
56+
students = [
57+
{
58+
"name": "Manuel Rodriguez",
59+
"birth_date": "2002-05-14",
60+
"grades": [8.5, 7.0, 9.0, 6.5]
61+
},
62+
{
63+
"name": "Lucia Perez",
64+
"birth_date": "2003-11-22",
65+
"grades": [7.5, 9.0, 8.0, 9.5]
66+
},
67+
{
68+
"name": "Pedro Sanchez",
69+
"birth_date": "2001-08-05",
70+
"grades": [6.0, 5.5, 7.0, 6.5]
71+
},
72+
{
73+
"name": "Ana Fernandez",
74+
"birth_date": "2004-01-30",
75+
"grades": [9.0, 8.5, 9.5, 10.0]
76+
},
77+
{
78+
"name": "Carlos Garcia",
79+
"birth_date": "2002-07-19",
80+
"grades": [7.0, 7.5, 6.0, 8.0]
81+
}
82+
]
83+
84+
# Promedio de calificaciones:
85+
def analysis(iterable: list, operation):
86+
return operation(iterable)
87+
88+
def avg(iterable: list) ->list:
89+
90+
avg_students = []
91+
92+
for element in iterable:
93+
avg = 0
94+
for grade in element["grades"]:
95+
avg += grade
96+
avg /= len(element["grades"])
97+
98+
avg_students.append({
99+
"name": element["name"],
100+
"avg": avg
101+
})
102+
103+
return avg_students
104+
105+
avg_students = analysis(students, avg)
106+
107+
print(list(avg_students))
108+
109+
# Aprovechamos la lista avg_students para obtener los mejores estudiantes, en este caso usaremos filter
110+
best_students = filter(lambda x: x['avg'] >=9 and x['avg']<=10, avg_students)
111+
print(list(best_students))
112+
113+
# Lista de estudiantes ordenada por fecha de nacimiento
114+
students_by_birthday = sorted(students, key=lambda p: p['birth_date'])
115+
print(list(students_by_birthday))
116+
117+
# Obtención de la nota más alta de entre todas las obtenidas por los estudiantes
118+
max_grade = reduce(lambda x,y: max(x,y), [grade for student in students for grade in student["grades"]])
119+
print(max_grade)
120+
121+
### FIN EJERCICIO EXTRA
122+
123+
124+
### FIN FUNCIONES DE ORDEN SUPERIOR EN PYTHON

0 commit comments

Comments
 (0)