Skip to content

Commit 3e2dc9a

Browse files
authored
Merge pull request #3989 from pyramsd/reto#22
#22 - python
2 parents b2f5353 + 9bfcd70 commit 3e2dc9a

File tree

1 file changed

+77
-0
lines changed
  • Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/python

1 file changed

+77
-0
lines changed
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
from datetime import datetime
2+
from functools import reduce
3+
'''
4+
Las funciones de orden superior son funciones que cumplen con al menos
5+
una de las siguientes características:
6+
7+
1. Reciben una o más funciones como argumentos.
8+
2. Devuelven una función como resultado.
9+
'''
10+
11+
# ejemplo 1
12+
def aplicar_func_sumar(funcion, valor1, valor2):
13+
return funcion(valor1, valor2)
14+
def sumar(x, y):
15+
return x + y
16+
resultado = aplicar_func_sumar(sumar, 5, 8)
17+
print(resultado)
18+
19+
20+
# ejemplo 2
21+
def al_cuadrado():
22+
def multiplicador(z):
23+
return z * z
24+
return multiplicador
25+
d = al_cuadrado()
26+
print(d(4))
27+
28+
29+
# ejemplo 3
30+
nums = [1,2,3,4,5]
31+
resultados = list(map(lambda x: x ** 3, nums))
32+
print(list(resultados))
33+
34+
35+
# ejemplo 4
36+
diccionarios = [{'nombre': 'Ana', 'edad': 25}, {'nombre': 'Juan', 'edad': 22}, {'nombre': 'Luis', 'edad': 30}]
37+
diccionarios.sort(key=lambda x: x['edad'])
38+
print(diccionarios)
39+
40+
41+
'''
42+
EXTRA
43+
'''
44+
Estudiantes = [
45+
{"nombre": "Sergio", "nacimiento":"12-07-2005", "calificaciones": [8.0, 10.0, 5.0, 7.0]},
46+
{"nombre": "Javier", "nacimiento":"10-05-2003", "calificaciones": [5.0, 10.0, 4.0, 6.0]},
47+
{"nombre": "Maria", "nacimiento":"07-05-2000", "calificaciones": [10.0, 10.0, 8.0, 9.0]},
48+
{"nombre": "Julia", "nacimiento":"20-01-2002", "calificaciones": [5.0, 4.0, 2.0, 10.0]},
49+
{"nombre": "Julian", "nacimiento": "01-01-2001", "calificaciones": [10.0, 8.0, 10.0, 10.0]}
50+
]
51+
52+
def promedio(calificaciones):
53+
return sum(calificaciones) / len(calificaciones)
54+
55+
promedios = list(map(
56+
lambda estudiante: [estudiante['nombre'], promedio(estudiante['calificaciones'])], Estudiantes
57+
))
58+
59+
for estudiante in promedios:
60+
print(f"{estudiante[0]}: {estudiante[1]}")
61+
62+
63+
tops = list(filter(lambda estudiante: promedio(estudiante['calificaciones']) >= 9.0, Estudiantes))
64+
top_names = list(map(lambda estudiante: estudiante['nombre'], tops))
65+
print(top_names)
66+
67+
68+
def dates(date_str):
69+
return datetime.strptime(date_str, "%d-%m-%Y")
70+
71+
sorted_students_by_age = sorted(Estudiantes, key=lambda estudiante: dates(estudiante["nacimiento"]), reverse=True)
72+
73+
for student in sorted_students_by_age:
74+
print(f"{student['nombre']} - {student['nacimiento']}")
75+
76+
mayor_calificacion = max(Estudiantes, key=lambda estudiante: promedio(estudiante['calificaciones']))
77+
print(f"{mayor_calificacion['nombre']} - {sum(mayor_calificacion['calificaciones']) / len(mayor_calificacion['calificaciones'])}")

0 commit comments

Comments
 (0)