Veamos algunos ejercicios sobre el campeonato de fútbol. Vamos a completar el programa con tres nuevas funciones. Empecemos. La primera función debe calcular el total de goles marcados en el campeonato. Esto es, básicamente, calcular la suma de todos los goles que están en la matriz que contiene la tabla de goles, lo cual podemos lograr con un recorrido total, usando dos ciclos sobre la matriz. Pasemos a Spyder para la implementación. La función inicia con una variable donde llevaremos la suma, y los dos ciclos que nos permiten hacer el recorrido total sobre la matriz, usando "for in range". Ahora, vamos a tomar el valor de una casilla, con casilla igual a tablero_ goles en la posición [i] [j]. Antes de sumar, debemos comprobar que la casilla no contenga un menos uno, por lo que un equipo no juega consigo mismo, ni un menos dos que nos indica un partido sin jugar. Eso podemos expresarlo también como: if casilla es mayor o igual que cero. En ese caso, lo que hacemos será sumar al total de goles, los que hay en dicha casilla. Retornamos el total, "return" total y con eso hemos terminado la función. He creado una interfaz de consola para poder probar las funciones que estamos implementando. Ya he cargado también dos archivos con los nombres de los equipos y un tablero de goles con resultados, que podemos ver, en este momento, en pantalla. Ejecutemos la función que acabamos de crear. Este caso sería el total de goles. Vemos que en total se han marcado 94 goles. La segunda función debe calcular el total de partidos que se han jugado hasta el momento. Para esto, debemos buscar dentro del tablero de goles, los resultados que sean diferentes a menos uno y menos dos, pero teniendo en cuenta que no debemos contar dos veces un mismo partido, por lo que un resultado está dado por los goles de cada uno de los equipos. Así que un marcador va a estar dado por dos casillas de la matriz. Lo que debemos hacer es mirar solamente por una mitad de la matriz, la que está sobre la diagonal principal o debajo de esta. En la figura está resaltada la parte superior a la diagonal, que será la que recorreremos para hallar los partidos jugados. Ya tenemos en la función nuestra variable que empieza en cero, para contar los partidos. Ahora vamos a buscar el recorrido para que se adapte a la forma que vimos en la figura. Este debe pasar por todas las filas, pero sobre las columnas recorre después del menos uno que está en la diagonal principal. Como ya habíamos visto, la diagonal principal es donde la fila y columna son iguales, así que el menos uno para una fila de índice "n" estará en la columna "n". Como no vale la pena que revisemos el menos uno, empezamos adelante de este. Nos queda: for "i" in range, de cero hasta la longitud del tablero de goles, y for "j" in range, desde "i" más uno, hasta la longitud del tablero de goles en cero. Acá revisamos que hay un marcador válido, es decir, mayor o igual que cero: if tablero_goles en la posición [i] [j] es mayor o igual a cero. En ese caso contamos un partido. Partidos más igual uno. Ahora, retornamos los partidos y quedó la función. Ejecutemos nuestra función desde la consola. En este caso será la opción seis y vemos que sale que se han jugado 24 partidos. Pasemos al último problema. Ahora queremos conocer el equipo que más goles ha marcado en el torneo. Para conocer los goles de un equipo, debemos recorrer la fila que le corresponda. Por ejemplo, para el caso del equipo uno en la matriz que estamos viendo, serían seis goles. Para el caso del equipo dos serían siete. La idea sería ir haciendo esto para cada equipo y luego comparar si su cantidad de goles es superior a una variable donde guardamos el mayor, como hacemos siempre en este tipo de problemas. Vamos a Spyder a ver la solución. Ya tenemos las variables donde guardamos el máximo de goles y el índice del equipo con más goles, ya que el nombre tendremos que sacarlo del diccionario que tiene esta información. Igualmente, ya tengo el recorrido que irá pasando por todas las filas. Como para cada una necesitamos contar los goles, he creado una variable para este propósito dentro del primer recorrido. Implementemos ahora el segundo. Nos queda: for "j" in range, desde cero hasta el len de tablero_goles, en cero, para tener las columnas. Sumamos los goles si son mayores que cero, entonces nos queda: si tablero en la posición [i] [j] llega a ser mayor que cero, entonces decimos que goles_actual más igual que esa cantidad, o sea, tablero_goles en la posición [i] [j]. Ahora debemos comparar esta cantidad contra el máximo, y si es necesario, reemplazar el mayor. Nos queda entonces: If goles_actual llega a ser mayor que el máximo de goles, entonces decimos que ahora el máximo de goles será igual a los goles del equipo actual y después que el índice del equipo goleador será igual a "i" Ahora nos falta obtener el nombre del equipo usando el índice. Para esto, debemos recorrer el diccionario y comparar los valores de cada llave contra el índice del mayor. Cuando coincidan, nos quedamos con el nombre del equipo. Nos queda, nom_equipo, que empieza siendo una cadena vacía, y después decimos, for una variable eq in equipos. Revisamos, si equipos, usamos eq como llave, es igual al índice del equipo goleador, significa que hemos encontrado el equipo que nos interesa. Entonces diremos, que nom_equipo será igual a eq. Finalmente retornamos el nombre del equipo. Ejecutamos de nuevo la interfaz y probamos. Este caso será la opción siete y vemos que nos informa que el equipo que más goles ha marcado es Manchester United.