Ejercicio: 1Eva_IT2018_T2 Desempeño de jugadores mundial futbol
Propuesta de solución en Python:
Revisar las sugerencias en el enunciado, dividir el problema y simplificar las tablas para las pruebas de algoritmos, con lo que que se obtiene:
a) el pais con mas goles promedio: Argentina b) los jugadores efectivos de: Brasil 0 c) jugadores amarrabalon: ['Lionel Messi'] d) jugador con más pases acertados: Lionel Messi e) promedios mundiales: [ 33.66666667 88.33333333 64. 179.33333333] f) : Lionel Messi no está por encima del promedio mundial >>>
visualizar la tabla de paises_jugadores es:
>>> pais_jugadores [['Cristiano Ronaldo'], ['Neymar Jr.'], ['Lionel Messi']]
las instrucciones desarrolladas por literal son:
# CCPG1001 Fundamentos de Programación FIEC-ESPOL # 1Eva_IT2018_T2 Desempeño de jugadores mundial futbol import numpy as np # INGRESO desempeno = np.array([[ 32, 24, 45], [ 90, 84, 91], [ 54, 60, 78], [187,239,112]]) paises = ['Portugal', 'Brasil', 'Argentina'] prtgl = ['Cristiano Ronaldo'] brsl = ['Neymar Jr.' ] argntn = ['Lionel Messi'] pais_jugadores = [prtgl, brsl, argntn] analizapais = 'Brasil' analizaposeebalon = 76 analizajugador = 'Lionel Messi' # PROCEDIMIENTO tamano = np.shape(desempeno) tdf = tamano[0] tdc = tamano[1] tp = len(paises) # tabla ubicapais[unpais] = [desde,hasta,cuantos] ubicapais = np.zeros(shape=(tp,3),dtype=int) desde = 0 unpais = 0 while not(unpais>=tp): jugadores = pais_jugadores[unpais] cuantos = len(jugadores) hasta = desde + cuantos ubicapais[unpais,0] = desde ubicapais[unpais,1] = hasta ubicapais[unpais,2] = cuantos desde = hasta unpais = unpais + 1 # Agrupa jugadores todosjugadores = [] unpais = 0 while not(unpais>=tp): jugadores = pais_jugadores[unpais] cuantos = len(jugadores) quien = 0 while not(quien>=cuantos): todosjugadores.append(jugadores[quien]) quien = quien + 1 unpais = unpais +1 # a) pais con mas goles promedio fila = 0 # fila goles anotados golesanotados = desempeno[fila] prmGolAnota = np.zeros(tp,dtype = float) unpais = 0 while not(unpais>=tp): desde = ubicapais[unpais,0] hasta = ubicapais[unpais,1] cuantos = ubicapais[unpais,2] golpais = golesanotados[desde:hasta] prmGolAnota[unpais] = np.sum(golpais)/cuantos unpais = unpais + 1 goleador = np.argmax(prmGolAnota) nombregoleador = paises[goleador] # b) Contar jugadores con mayor efectividad # al promedio de analizapais # donde = paises.index(buscapais) donde = -1 unpais = 0 while not(unpais>=tp or donde>=0): if (paises[unpais] == analizapais): donde = unpais unpais = unpais + 1 # efectividad del pais analizado fila = tdf-1 # tiros al arco (última de desempeno) tirosdirectos = desempeno[fila] desde = ubicapais[donde,0] hasta = ubicapais[donde,1] anotados = golesanotados[desde:hasta] directos = tirosdirectos[desde:hasta] efectivopais = np.sum(anotados)/np.sum(directos) #jugadores efectivos del pais analizado cuentaefectivos = 0 quien = desde while not(quien>=hasta): unaefectividad = golesanotados[quien]/tirosdirectos[quien] if (unaefectividad > efectivopais): cuentaefectivos = cuentaefectivos+1 quien = quien + 1 # c) posesion balón fila = 2 # fila de posesión de balón poseebalon = desempeno[fila] amarrabalon = [] quien = 0 while not(quien>=tdc): if (poseebalon[quien]>analizaposeebalon): amarrabalon.append(todosjugadores[quien]) quien = quien +1 # d) jugador con más pases acertados fila = tdf-2 pasesacertados = desempeno[fila] quienacierta = np.argmax(pasesacertados) nombreacierta = todosjugadores[quienacierta] # e) promedios mundiales promediomundial = np.sum(desempeno,axis =1)/tdc # f) jugadores superior a promedio mundial # donde = todosjugadores.index(analizajugador) donde = -1 quien = 0 while not(unpais>=tp or donde>=0): if (todosjugadores[quien] == analizajugador): donde = unpais quien = quien + 1 # verifica cumplimiento de parámetros cumple = ' está ' fila = 0 while not(fila>=tdf): caracteristica = desempeno[fila,donde] if (caracteristica< promediomundial[fila]): cumple = ' no está ' fila = fila+1 mensaje = analizajugador + cumple + 'por encima del promedio mundial' # SALIDA print('a) pais con mas goles promedio: ', nombregoleador) print('b) jugadores efectivos de: ', analizapais, cuentaefectivos) print('c) jugadores amarrabalon: ', amarrabalon) print('d) jugador con más pases acertados: ', nombreacierta) print('e) promedios mundiales: ', promediomundial) print('f) :', mensaje)
Tarea: Realice las modificaciones necesarias para realizar las funciones para las secciones de:
– crear tabla ubicapais(paises_jugadores)
– agrupajugadores(paises_jugadores)
use las funciones realizadas en el programa.
Considerar cuando la respuesta de los algoritmos de búsqueda es -1, no se encontró el elemento en el conjunto. En la propuesta no se valida ésta situación, por ejemplo, si se pone ‘espana’ y no se eneuentra en la tabla.