You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Explora el concepto de funciones de orden superior en tu lenguaje
3
+
* creando ejemplos simples (a tu elección) que muestren su funcionamiento.
4
+
*
5
+
* DIFICULTAD EXTRA (opcional):
6
+
* Dada una lista de estudiantes (con sus nombres, fecha de nacimiento y
7
+
* lista de calificaciones), utiliza funciones de orden superior para
8
+
* realizar las siguientes operaciones de procesamiento y análisis:
9
+
* - Promedio calificaciones: Obtiene una lista de estudiantes por nombre
10
+
* y promedio de sus calificaciones.
11
+
* - Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes
12
+
* que tienen calificaciones con un 9 o más de promedio.
13
+
* - Nacimiento: Obtiene una lista de estudiantes ordenada desde el más joven.
14
+
* - Mayor calificación: Obtiene la calificación más alta de entre todas las
15
+
* de los alumnos.
16
+
* - Una calificación debe estar comprendida entre 0 y 10 (admite decimales)."""
17
+
18
+
fromfunctoolsimportreduce
19
+
importdatetime
20
+
21
+
# Pueden recibir funciones como parámetros
22
+
deffuncSuperior(funcion, param): # Recibe una función y un parámetro
23
+
returnfuncion(param)
24
+
25
+
longitud=funcSuperior(len, 'Juan') # Se pasa la función len, propia de Python, y una cadena, para que devuelva la longitud de dicha cadena.
26
+
print(f'La longitud del parámetro es -> {longitud}')
27
+
28
+
# Pueden devolver funciones como resultado
29
+
defaplicarOperacion(operando1, operador):
30
+
defoperacion(operando2):
31
+
ifoperador=='+':
32
+
returnoperando1+operando2
33
+
elifoperador=='-':
34
+
returnoperando1-operando2
35
+
elifoperador=='*':
36
+
returnoperando1*operando2
37
+
elifoperador=='/':
38
+
returnoperando1/operando2
39
+
else:
40
+
return'Operador no soportado o incorrecto'
41
+
return(operacion) # Devuelve la función operacion
42
+
43
+
# Aplicar la operación
44
+
resultado=aplicarOperacion(3,'+') # resultado va a contener una función
45
+
print(resultado(4)) # A la función retornada, le envío el argumento restante para completar la operación
46
+
print(aplicarOperacion(4, '+')(5)) # Otra forma de llamarla
47
+
48
+
# Hay funciones de orden superior, propias de Python
49
+
# map(): Aplica una función a cada elemento de una lista
50
+
letras= ['A', 'B', 'H', 'Y', 'J', 'P', 'R']
51
+
defordenar(letras):
52
+
returnsorted(letras)
53
+
54
+
ordenacion=map(ordenar, letras)
55
+
print(list(ordenacion))
56
+
57
+
# filter(): Aplica una función a cada elemento de una lista y devuelve los elementos que cumplen
58
+
defmayorQue5(num):
59
+
returnnum>5
60
+
61
+
print(list(filter(mayorQue5, [6,4,8,14])))
62
+
63
+
# sorted() Ordena una lista
64
+
print(sorted(letras))
65
+
print(sorted(letras, reverse=True)) # Ordena en sentido inverso
66
+
print(sorted([6,4,8,14], key=lambdan: -n)) # Aquí se usa una lambda: Funciones anónimas a las que se le envía la lista, en este caso, y se recibe la lista ordenada al revés
67
+
68
+
# reduce(): Aplica una función a cada elemento de una lista y devuelve el resultado final. Tenemos que importarla de functools
69
+
defsumar(x, y):
70
+
returnx+y
71
+
72
+
print(reduce(sumar, [6,4,8,14])) # Devuelve la suma de los elementos de toda la lista (6 + 4 + 8 +14) = 32
0 commit comments