Skip to content

Commit 87244f1

Browse files
authored
Merge pull request mouredev#3954 from Mauricio-Leyva/main
#22 - Python
2 parents 8f6c1bb + de13f1c commit 87244f1

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
"""
2+
EJERCICIO:
3+
funciones de orden superior
4+
"""
5+
6+
# Ejemplo 1: Funciones como argumentos
7+
def apply_function(func, value):
8+
return func(value)
9+
10+
def square(x):
11+
return x * x
12+
13+
def double(x):
14+
return x * 2
15+
16+
result_square = apply_function(square, 5)
17+
result_double = apply_function(double, 5)
18+
19+
print(f"apply_function(square, 5) = {result_square}")
20+
print(f"apply_function(double, 5) = {result_double}")
21+
22+
# Ejemplo 2: Funciones que retornan otras funciones
23+
def create_multiplier(multiplier):
24+
def multiplier_function(x):
25+
return x * multiplier
26+
return multiplier_function
27+
28+
double = create_multiplier(2)
29+
triple = create_multiplier(3)
30+
31+
print(f"double(5) = {double(5)}") # Salida: 10
32+
print(f"triple(5) = {triple(5)}") # Salida: 15
33+
34+
#Ejemplo 3: Usando map, filter y reduce
35+
from functools import reduce
36+
37+
numbers = [1, 2, 3, 4, 5]
38+
squared_numbers = list(map(lambda x: x ** 2, numbers))
39+
print(f"map(lambda x: x ** 2, numbers) = {squared_numbers}")
40+
41+
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
42+
print(f"filter(lambda x: x % 2 == 0, numbers) = {even_numbers}")
43+
44+
product = reduce(lambda x, y: x * y, numbers)
45+
print(f"reduce(lambda x, y: x * y, numbers) = {product}")
46+
47+
48+
"""
49+
Extra:
50+
"""
51+
from datetime import datetime
52+
from functools import reduce
53+
54+
students = [
55+
{"name": "Ana", "dob": "2005-04-23", "grades": [8.5, 9.0, 7.5]},
56+
{"name": "Carlos", "dob": "2004-07-15", "grades": [9.5, 9.0, 8.5]},
57+
{"name": "Beatriz", "dob": "2006-01-10", "grades": [6.0, 7.5, 8.0]},
58+
{"name": "David", "dob": "2003-12-11", "grades": [7.0, 6.5, 6.0]},
59+
{"name": "Elena", "dob": "2005-10-29", "grades": [10.0, 9.5, 9.0]},
60+
]
61+
62+
# 1. Promedio calificaciones
63+
def calculate_average(grades):
64+
return sum(grades) / len(grades)
65+
66+
average_grades = list(map(lambda student: {"name": student["name"], "average": calculate_average(student["grades"])}, students))
67+
68+
print("Promedio de calificaciones:")
69+
for student in average_grades:
70+
print(f"{student['name']}: {student['average']:.2f}")
71+
72+
# 2. Mejores estudiantes
73+
top_students = list(filter(lambda student: calculate_average(student["grades"]) >= 9, students))
74+
top_students_names = list(map(lambda student: student["name"], top_students))
75+
76+
print("Mejores estudiantes:")
77+
print(top_students_names)
78+
79+
# 3. Nacimiento
80+
def parse_date(date_str):
81+
return datetime.strptime(date_str, "%Y-%m-%d")
82+
83+
sorted_students_by_age = sorted(students, key=lambda student: parse_date(student["dob"]), reverse=True)
84+
85+
print("Estudiantes ordenados desde el más joven:")
86+
for student in sorted_students_by_age:
87+
print(f"{student['name']} ({student['dob']})")
88+
89+
# 4. Mayor calificación
90+
all_grades = reduce(lambda acc, student: acc + student["grades"], students, [])
91+
highest_grade = max(all_grades)
92+
93+
print(f"La calificación más alta es: {highest_grade}")

0 commit comments

Comments
 (0)