|  | 
|  | 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