Skip to content

Commit b3e3c37

Browse files
authored
Merge pull request mouredev#4875 from rigo93acosta/main
#22 - Python
2 parents 145b2ac + cc39a47 commit b3e3c37

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
'''
2+
## 22 FUNCIONES DE ORDEN SUPERIOR
3+
/*
4+
* EJERCICIO:
5+
* Explora el concepto de funciones de orden superior en tu lenguaje
6+
* creando ejemplos simples (a tu elección) que muestren su funcionamiento.
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Dada una lista de estudiantes (con sus nombres, fecha de nacimiento y
10+
* lista de calificaciones), utiliza funciones de orden superior para
11+
* realizar las siguientes operaciones de procesamiento y análisis:
12+
* - Promedio calificaciones: Obtiene una lista de estudiantes por nombre
13+
* y promedio de sus calificaciones.
14+
* - Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes
15+
* que tienen calificaciones con un 9 o más de promedio.
16+
* - Nacimiento: Obtiene una lista de estudiantes ordenada desde el más joven.
17+
* - Mayor calificación: Obtiene la calificación más alta de entre todas las
18+
* de los alumnos.
19+
* - Una calificación debe estar comprendida entre 0 y 10 (admite decimales).
20+
*/
21+
'''
22+
23+
from functools import reduce
24+
from datetime import datetime
25+
26+
"""
27+
Ejercicio
28+
"""
29+
30+
# Funcion con argumento
31+
def apply_func(func, x):
32+
return func(x)
33+
34+
print(apply_func(len, "Hola mundo"))
35+
36+
# Retorno de funcion
37+
38+
def apply_multiplier(n):
39+
def multiplier(x):
40+
return x * n
41+
return multiplier
42+
43+
x = apply_multiplier(2)
44+
print(x(5))
45+
46+
# Sistema
47+
numbers = [3, 4, 1, 5, 2]
48+
49+
# map()
50+
def applay_double(n):
51+
return n*2
52+
53+
print(list(map(applay_double, numbers)))
54+
55+
# filter()
56+
def is_even(n):
57+
return n % 2 == 0
58+
59+
print(list(filter(is_even, numbers)))
60+
61+
# sorted()
62+
print(sorted(numbers))
63+
print(sorted(numbers, reverse=True))
64+
print(sorted(numbers, key=lambda x: -x))
65+
66+
# reduce
67+
68+
def sum(x, y):
69+
return x + y
70+
71+
print(reduce(sum, numbers))
72+
73+
"""
74+
Extra
75+
"""
76+
77+
students = [
78+
{"name": "Rigo", "birthdate": "25-05-1993", "grades": [10, 9, 10, 7, 10]},
79+
{"name": "Mary", "birthdate": "24-08-1988", "grades": [9, 9, 5, 7, 6]},
80+
{"name": "Robe", "birthdate": "06-05-1986", "grades": [8, 8, 8, 7, 6]}
81+
]
82+
83+
def average(grades):
84+
return sum(grades)/len(grades)
85+
86+
# Promedio calificaciones
87+
print(
88+
list(map(lambda student:
89+
{"name": student["name"],
90+
"average": average(student["grades"])}, students))
91+
)
92+
93+
# Mejores estudiantes
94+
print(
95+
list(
96+
map(lambda student:
97+
student["name"],
98+
filter(lambda student: average(student["grades"]) >= 9, students))
99+
)
100+
)
101+
102+
# Nacimiento
103+
print(
104+
list(
105+
sorted(students, key=lambda student: datetime.strptime(student["birthdate"], "%d-%m-%Y"), reverse=True)
106+
)
107+
)
108+
109+
# Mayor calificacion
110+
111+
print(max(map(lambda student: max(student["grades"]), students)))

0 commit comments

Comments
 (0)