Skip to content

Commit 3ff4b18

Browse files
committed
mouredev#22-python
1 parent 68fd98b commit 3ff4b18

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
import math
2+
from datetime import datetime
3+
from functools import reduce
4+
5+
6+
print("\n\n=======================================EJERCICIO=======================================\n\n")
7+
8+
'''
9+
* EJERCICIO:
10+
* Explora el concepto de funciones de orden superior en tu lenguaje
11+
* creando ejemplos simples (a tu elección) que muestren su funcionamiento.
12+
'''
13+
14+
def arithmetic(function, num):
15+
return function(num)
16+
17+
def cube_root(num):
18+
print(f"La raiz cubica de 125 es: {math.cbrt(num)}")
19+
20+
def elevate_cube(num):
21+
print(f"{num} elevado al cubo es: {num**3}")
22+
23+
24+
arithmetic(cube_root, 125)
25+
arithmetic(elevate_cube, 5)
26+
27+
28+
print("\n\n=======================================DIFICULTAD EXTRA=======================================\n\n")
29+
30+
'''
31+
* DIFICULTAD EXTRA (opcional):
32+
* Dada una lista de estudiantes (con sus nombres, fecha de nacimiento y
33+
* lista de calificaciones), utiliza funciones de orden superior para
34+
* realizar las siguientes operaciones de procesamiento y análisis:
35+
* - Promedio calificaciones: Obtiene una lista de estudiantes por nombre
36+
* y promedio de sus calificaciones.
37+
* - Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes
38+
* que tienen calificaciones con un 9 o mas de promedio.
39+
* - Nacimiento: Obtiene una lista de estudiantes ordenada desde el mas joven.
40+
* - Mayor calificación: Obtiene la calificación mas alta de entre todas las
41+
* de los alumnos.
42+
* - Una calificación debe estar comprendida entre 0 y 10 (admite decimales).
43+
'''
44+
45+
46+
# Lista de estudiantes
47+
students = [
48+
{"name":"Rantam", "born_date":"29-05-2000", "grades":[7.2, 9.0, 8.6]},
49+
{"name":"Helena", "born_date":"12-02-2005", "grades":[9.8, 9.2, 8.7]},
50+
{"name":"Silvia", "born_date":"10-07-2003", "grades":[8.5, 8.0, 8.4]},
51+
{"name":"Jose Luis", "born_date":"22-10-2003", "grades":[7.0, 6.5, 7.4]},
52+
{"name":"Fernando", "born_date":"17-07-1998", "grades":[5.0, 3.8, 4.6]},
53+
{"name":"Brais", "born_date":"11-06-2003", "grades":[8.0, 9.4, 9.7]}
54+
]
55+
56+
# Función para calcular la media
57+
def calculate_average(grades):
58+
return round(sum(grades) / len(grades), 2)
59+
60+
# Función para calcular la nota media de los estudiantes
61+
def get_average_grades(students, average_func):
62+
return list(map(lambda student: {"name": student["name"], "average_grade": average_func(student["grades"])}, students))
63+
64+
# Función para obtener los mejores estudiantes
65+
def get_top_students(students, average_func, threshold=9.0):
66+
return list(filter(lambda student: average_func(student["grades"]) >= threshold, students))
67+
68+
# Función para obtener una lista de estudiantes ordenada desde el mas joven
69+
def sort_students_by_age(students):
70+
return sorted(students, key=lambda student: datetime.strptime(student["born_date"], "%d-%m-%Y"), reverse=True)
71+
72+
# Función para obtener la calificación mas alta
73+
def get_highest_grade(students):
74+
all_grades = reduce(lambda acc, student: acc + student["grades"], students, [])
75+
return max(all_grades)
76+
77+
78+
average_grades = get_average_grades(students, calculate_average)
79+
top_students = get_top_students(students, calculate_average)
80+
students_sorted_by_age = sort_students_by_age(students)
81+
highest_grade = get_highest_grade(students)
82+
83+
84+
print("Promedio calificaciones:")
85+
for student in average_grades:
86+
print(student)
87+
88+
print("\nMejores estudiantes:")
89+
for student in top_students:
90+
print(student["name"], calculate_average(student["grades"]))
91+
92+
print("\nEstudiantes ordenados desde el mas joven:")
93+
for student in students_sorted_by_age:
94+
print(student["name"], student["born_date"])
95+
96+
print("\nMayor calificación:", highest_grade)
97+
98+

0 commit comments

Comments
 (0)