1+ # @Author Daniel Grande (Mhayhem) 
2+ 
3+ from  datetime  import  date , datetime 
4+ 
5+ # EJERCICIO: 
6+ # Explora el concepto de funciones de orden superior en tu lenguaje  
7+ # creando ejemplos simples (a tu elección) que muestren su funcionamiento. 
8+ 
9+ def  greet (name ):
10+     return  f"Hola { name }  
11+ 
12+ def  process_greeting (text : str , function ):
13+     return  function (text )
14+ 
15+ print (process_greeting ("Dany" , greet ))
16+     
17+ # DIFICULTAD EXTRA (opcional): 
18+ # Dada una lista de estudiantes (con sus nombres, fecha de nacimiento y  
19+ # lista de calificaciones), utiliza funciones de orden superior para  
20+ # realizar las siguientes operaciones de procesamiento y análisis: 
21+ # - Promedio calificaciones: Obtiene una lista de estudiantes por nombre 
22+ #   y promedio de sus calificaciones. 
23+ # - Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes 
24+ #   que tienen calificaciones con un 9 o más de promedio. 
25+ # - Nacimiento: Obtiene una lista de estudiantes ordenada desde el más joven. 
26+ # - Mayor calificación: Obtiene la calificación más alta de entre todas las 
27+ #   de los alumnos. 
28+ # - Una calificación debe estar comprendida entre 0 y 10 (admite decimales). 
29+ 
30+ students  =  [
31+     {
32+     "name" : "Dany" ,
33+     "birth_day" : date (1999 , 7 , 15 ),
34+     "grades" : [6 , 7.5 , 9 , 9 , 10 , 9 ]
35+     },
36+     {
37+     "name" : "Carlos" ,
38+     "birth_day" : date (1999 , 2 , 13 ),
39+     "grades" : [9 , 9 , 10 , 9 , 9 , 10 ]
40+     },
41+     {
42+     "name" : "Sandra" ,
43+     "birth_day" : date (2000 , 12 , 31 ),
44+     "grades" : [9 , 8.5 , 9 , 9 , 9 , 9.5 ]
45+     }
46+ ]
47+ def  students_info (func1 , func2 , func3 , func4 , array ):
48+     print ("Promedios:" )
49+     print (func1 (array ))
50+     print ("Promedios mas altos:" )
51+     print (func2 (array ))
52+     print ("Estudiantes ordenados de menor a mayor:" )
53+     print (func3 (array ))
54+     print ("Mejor promedio:" )
55+     print (func4 (array ))
56+ 
57+ def  average_grades (array : list ):
58+     return  [
59+         f"{ student ['name' ]} { sum (student ['grades' ]) /  len (student ['grades' ]):.1f}   for  student  in  array 
60+     ]
61+ 
62+ def  highest_average (array : list ):
63+     return  [
64+         student ['name' ]
65+         for  student  in  array 
66+         if  (sum (student ['grades' ]) /  len (student ['grades' ])) >=  9 
67+     ]
68+ def  youngest (array : list ):
69+     today  =  date .today ()
70+     sorted_list  =  sorted (array , key = lambda  s : s ["birth_day" ], reverse = True )
71+     return  [
72+         f"{ item ['name' ]} { today .year  -  (item ['birth_day' ].year ) -  ((today .month , today .day ) <  (item ["birth_day" ].month , item ["birth_day" ].day ))}  
73+         for  item  in  sorted_list 
74+     ]
75+ 
76+ def  the_best (array : list ):
77+     return  max (array , key = lambda  s : sum (s ["grades" ]) /  len (s ["grades" ]))["name" ]
78+ 
79+ students_info (average_grades , highest_average , youngest , the_best , students )
0 commit comments