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.