[MÚSICA] [MÚSICA] ¿Cómo están? Yo les cuento que hoy hablaremos de un uso especial de los diccionarios que tienen como objetivo manejar elementos que tienen las mismas características. Cuando tenemos que modelar elementos de la realidad, nos vamos a encontrar frecuentemente con conjuntos de elementos que tienen las mismas características. Por ejemplo, de todos los estudiantes de una universidad se guarda la misma información, código, nombre, género, carrera que estudia, promedio y su semestre según créditos. Porque todos los equipos de fútbol de un torneo se describen con su nombre, número de partidos jugados, ganados, empatados y perdidos y quién es su capitán. En estos casos los diccionarios nos permiten manejar fácilmente este tipo de elementos. Para el caso de los estudiantes veamos los diccionarios que creamos con la información de 4 estudiantes. Pero crear estudiante por estudiante es dispendioso. Así que podemos crear una función encargada de crear estudiantes como la que tenemos aquí, noten que la función recibe la información del estudiante a través de parámetros por valor. Crea el diccionario asignando la información correspondiente a cada llave y retorna dicho diccionario. Luego podemos invocarla tantas veces como estudiantes queramos crear, que en este caso es 4. Y si queremos imprimir nuestros diccionarios, se ven así. Antes de continuar les propongo esta pregunta. Ahora practiquemos un poco este uso de los diccionarios y para esto tenemos tres problemas. Averiguar quién es el estudiante con el mayor promedio, calcular cuántos estudiantes son mujeres y decidir si hay al menos una mujer pila. Empecemos con la función mayor promedio. Como you sabemos este tipo de búsquedas es mejor hacerlas con casos no excluyentes. Es decir, con if independientes. Y así podremos usar la estrategia que habíamos estudiado resolviendo el problema en encontrar el mayor entre 4 números. Un detalle adicional de este problema específico es que no tenemos que retornar el mayor promedio sino el estudiante que tiene dicho promedio. Por eso a la variable mayor le asignamos todo el diccionario con la información del estudiante. Además porque así también podemos acceder a la información de la llave promedio que es la que nos interesa verificar en cada uno de los condicionales. La invocación de esta función desde el programa principal es sencilla. Le asignamos a la variable mejor el resultado de la función y luego imprimimos el resultado que incluye quién es el estudiante y cuál es su promedio. Pasemos al segundo problema. Nuevamente analicemos si se trata de casos excluyentes o no excluyentes. Nuevamente la respuesta es que son casos no excluyentes, que es uno sea mujer no descarta la posibilidad de que es dos sea mujer y así sucesivamente. Por lo tanto tenemos condicionales independientes. En esta oportunidad necesitamos una variable que nos ayude a contar el número de casos que se cumple. Dicho valor será el número de mujeres que tenemos en este grupo de estudiantes. La invocación de la función desde el programa principal es muy similar al anterior. Pasemos al tercer problema. En el contexto de este ejemplo llamamos mujer pila a la estudiante cuyo promedio es 4 o superior. Noten que la diferencia con respecto al problema anterior es que es suficiente que un estudiante cumpla con las dos condiciones. Es decir, si el primer estudiante cumple con las dos condiciones pues no tenemos que seguir buscando. Por lo tanto podemos usar una cascada de condicionales. Veamos. Noten que asumimos que la respuesta es falsa, simplemente porque aún no sabemos si algún estudiante va a cumplir con las condiciones buscadas. Luego el if verifica las dos condiciones para est1. Y si se cumple cambia el valor de la variable hay. Como es una cascada no se evaluarían los siguientes casos y pasamos a retornar inmediatamente. En cambio si est1 no cumple con las condiciones, pasamos al primer elif, donde básicamente hacemos io mismo. Hasta que llegamos al tercer elif que es el último caso. Es decir, donde verificamos si est4 cumple o no las condiciones. Noten que es posible tener una cascada de condicionales sin else. Para esta función vamos a ver tres alternativas de invocación desde el programa principal. La primera es usando una variable donde guardaremos el resultado de la función y dado que la función retorna booleana, en el condicional no es necesario usar la igualdad porque si es true pues entra al if, si no pues no entra. La siguiente opción invoca la función directamente en el condicional y hace la comparación con true. Y en la última también se hace la invocación desde el condicional pero no se hace la comparación explícita. En realidad podría seguirles dando alternativas, como podrán imaginar esas pequeñas diferencias empezarán a ser parte del estilo de programación de cada uno. [MÚSICA]