Skip to content

Commit 260336d

Browse files
authored
Merge pull request #4003 from agusrosero/develop
#22 - Python
2 parents f20267d + 3f28cbf commit 260336d

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
"""
2+
/*
3+
* EJERCICIO:
4+
* Explora el concepto de funciones de orden superior en tu lenguaje
5+
* creando ejemplos simples (a tu elección) que muestren su funcionamiento.
6+
*
7+
* DIFICULTAD EXTRA (opcional):
8+
* Dada una lista de estudiantes (con sus nombres, fecha de nacimiento y
9+
* lista de calificaciones), utiliza funciones de orden superior para
10+
* realizar las siguientes operaciones de procesamiento y análisis:
11+
* - Promedio calificaciones: Obtiene una lista de estudiantes por nombre
12+
* y promedio de sus calificaciones.
13+
* - Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes
14+
* que tienen calificaciones con un 9 o más de promedio.
15+
* - Nacimiento: Obtiene una lista de estudiantes ordenada desde el más joven.
16+
* - Mayor calificación: Obtiene la calificación más alta de entre todas las
17+
* de los alumnos.
18+
* - Una calificación debe estar comprendida entre 0 y 10 (admite decimales).
19+
*/
20+
"""
21+
22+
# EJERCICIO:
23+
from datetime import datetime
24+
25+
26+
def operation(x, func):
27+
return func(x)
28+
29+
30+
def squared(x):
31+
return x ** 2
32+
33+
34+
result = operation(10, squared)
35+
print(result)
36+
37+
# DIFICULTAD EXTRA:
38+
estudiantes = [
39+
{
40+
"nombre": "Agustin",
41+
"fecha_nacimiento": "28-09-01",
42+
"lista_calificaciones": [10, 6, 7, 8]
43+
},
44+
{
45+
"nombre": "Hernan",
46+
"fecha_nacimiento": "03-08-00",
47+
"lista_calificaciones": [9, 8, 7, 6]
48+
},
49+
{
50+
"nombre": "Francisco",
51+
"fecha_nacimiento": "01-03-02",
52+
"lista_calificaciones": [9, 8, 9, 10]
53+
},
54+
{
55+
"nombre": "Alfred",
56+
"fecha_nacimiento": "09-02-03",
57+
"lista_calificaciones": [10, 10, 8, 8]
58+
}
59+
]
60+
61+
# Promedio calificaciones: Obtiene una lista de estudiantes por nombre y promedio de sus calificaciones.
62+
63+
64+
def promedio_calificaciones(calificaciones):
65+
return sum(calificaciones) / len(calificaciones)
66+
67+
68+
for estudiante in estudiantes:
69+
nombre = estudiante["nombre"]
70+
calificaciones = estudiante["lista_calificaciones"]
71+
print(f"Nombre: {nombre}, Calificaciones: {
72+
promedio_calificaciones(calificaciones)}")
73+
74+
# Mejores estudiantes: Obtiene una lista con el nombre de los estudiantes que tienen calificaciones con un 9 o más de promedio.
75+
for estudiante in estudiantes:
76+
nombre = estudiante["nombre"]
77+
calificaciones = estudiante["lista_calificaciones"]
78+
if promedio_calificaciones(calificaciones) >= 9:
79+
print(f"Estudiantes con 9 o mas: {nombre}")
80+
81+
# Nacimiento: Obtiene una lista de estudiantes ordenada desde el más joven.
82+
83+
84+
def convertir_fecha(fecha_str):
85+
return datetime.strptime(fecha_str, "%d-%m-%y")
86+
87+
88+
estudiantes_ordenados = sorted(estudiantes, key=lambda x: convertir_fecha(
89+
x["fecha_nacimiento"]), reverse=True)
90+
91+
for estudiante in estudiantes_ordenados:
92+
print(f"Nombre: {estudiante['nombre']}, Fecha de nacimiento: {
93+
estudiante['fecha_nacimiento']}")
94+
95+
# Mayor calificación: Obtiene la calificación más alta de entre todas las de los alumnos.
96+
max_calificacion = float('-inf')
97+
98+
for estudiante in estudiantes:
99+
for calificacion in estudiante["lista_calificaciones"]:
100+
if calificacion > max_calificacion:
101+
max_calificacion = calificacion
102+
103+
print(f"La calificación más alta es: {max_calificacion}")

0 commit comments

Comments
 (0)