Ejercicio: 3Eva2018TII_T2 Jugadores Sudamericano Sub-20
Propuesta de solución en Python, se usa un archivo de prueba: br-ur.csv
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL
# 3Eva_IIT2018_T2 Jugadores Sudamericano Sub-20
def actualizaDiccionario(nomArchivo,dic):
paises = list(dic.keys())
archivo = open(nomArchivo,'r')
encabezado = archivo.readline()
linea = archivo.readline()
while not(linea==''):
linea = linea.strip('\n')
partes = linea.split(',')
pais = partes[0]
jugador = partes[1]
if not(pais in paises):
dic[pais]={jugador:{'TA':int(partes[2]),
'TR':int(partes[3]),
'Goles':int(partes[4]),
'Minutos':int(partes[5]),
'KM':float(partes[6])
}
}
else:
jugadores = list(dic[pais].keys())
if not(jugador in jugadores):
dic[pais][jugador] = {'TA':int(partes[2]),
'TR':int(partes[3]),
'Goles':int(partes[4]),
'Minutos':int(partes[5]),
'KM':float(partes[6])
}
else:
dic[pais][jugador]['TA'] = dic[pais][jugador]['TA'] + int(partes[2])
dic[pais][jugador]['TR'] = dic[pais][jugador]['TR'] + int(partes[3])
dic[pais][jugador]['Goles'] = dic[pais][jugador]['Goles'] + int(partes[4])
dic[pais][jugador]['Minutos'] = dic[pais][jugador]['Minutos'] + int(partes[5]),
dic[pais][jugador]['KM'] = dic[pais][jugador]['KM'] + float(partes[5])
linea = archivo.readline()
archivo.close()
return(dic)
def buenDeportista(jugador,dic):
cumple = 0
paises = list(dic.keys())
for pais in paises:
jugadores = list(dic[pais].keys())
if jugador in jugadores:
tarjetas = dic[pais][jugador]['TA'] + dic[pais][jugador]['TR']
transcurrido = dic[pais][jugador]['Minutos']
registro = tarjetas/transcurrido
if registro<(2/270):
cumple=1
return(cumple)
def jugadorAtleta(jugador,dic):
cumple = 0
paises = list(dic.keys())
for pais in paises:
jugadores = list(dic[pais].keys())
total = 0
for jugador in jugadores:
total = total + dic[pais][jugador]['KM']
promedio = total/len(jugadores)
if jugador in jugadores:
if dic[pais][jugador]['KM']>=promedio and dic[pais][jugador]['Goles']>=1:
cumple = 1
return(cumple)
def paisBuenasPraticas(pais,dic):
cumple = 0
paises = list(dic.keys())
if pais in paises:
jugadores = list(dic[pais].keys())
k = len(jugadores)
cuenta = 0
for jugador in jugadores:
cuenta = cuenta + buenDeportista(jugador, dic)
if (k==cuenta):
cumple = 1
return(cumple)
# PROGRAMA -----------------------
# INGRESO
L = ['br-ur.csv'] #,'ec-vn.csv']
# PROCEDIMIENTO
dic = {}
n = len(L)
i = 0
while not(i>=n):
nomArchivo = L[i]
actualizaDiccionario(nomArchivo,dic)
i = i + 1
paises = list(dic.keys())
resultados = []
jugadoresatletas = []
for pais in paises:
jugadores = list(dic[pais].keys())
k = len(jugadores)
cuenta = 0
goles = 0
recorrido = 0
for jugador in jugadores:
cuenta = cuenta + jugadorAtleta(jugador,dic)
goles = goles + dic[pais][jugador]['Goles']
recorrido = recorrido + dic[pais][jugador]['KM']
goleskm = goles/recorrido
if jugadorAtleta(jugador,dic)==1:
jugadoresatletas.append([jugador,pais])
porcentaje = cuenta/k
nominado = paisBuenasPraticas(pais,dic)
resultados.append([pais,porcentaje,goleskm,nominado])
# SALIDA
print('pais,porcentaje,goleskm,nominado')
print(resultados)
print('jugadores atletas')
print(jugadoresatletas)