Vous êtes sur la page 1sur 3

#Autora: Ginger Vargas Gomez

# Se recuperan datos de archivos de textos y se los transforman en colecciones

import numpy as np # Se importa la libreria

#Ejercicio1
def cargarDatos(anio): #Se implementa una funcion, en el cual recibe el entero
anio
archivo = "EstasATP"+str(anio)+".csv"
archivo = open(archivo,"r") #Lee los datos que estan en el archivo
archivo.readline() #Se utilizo readline para transferir a una lista, todas las
lineas de texto del archivo
ranks = []
pais = []
Jugador = []
edad = []
puntos = []
torneos = []
for linea in archivo: # Se utilizo el for para recorrer la linea en el
archivo
linea = linea.strip().split("|")
ranks.append(int(linea[0]))
pais.append(linea[1])
Jugador.append(linea[2])
edad.append(int(linea[3]))
puntos.append(int(linea[4]))
torneos.append(int(linea[5]))
JugaSinRe = [] #Se creo una lista vacia para agregar en JugaSinRe
for juga in Jugador: #Se recorre juga en gudaores
if juga not in JugaSinRe: # Si no se encuentra juga en la lista JugaSinre,
entonces se agrega en aquella lista
JugaSinRe.append(juga)
rankOrden = []
paisOrden = []
edadOrden = []
puntosOrden = []
torneosOrden = []
for name in JugaSinRe: #Se utilizo el for para recorrer name en JugaSinRe
indices = np.where(np.array(Jugador) == name)
ranks_Jud = list(np.array(ranks)[indices])
r = []
for i in ranks_Jud:
if i not in r:
r.append(i)
rankOrden.append(r)
paisOrden.append(list(np.array(pais)[indices])[0])
edadOrden.append(max(list(np.array(edad)[indices])))
puntosOrden.append(list(np.array(puntos)[indices]))
torneosOrden.append(max(list(np.array(torneos)[indices])))
l = []
for i in range(len(rankOrden)):
f = {}
f["pais"],f["edad"],f["nTorneos"],f["ranks"],f["puntos"] =
paisOrden[i],edadOrden[i],torneosOrden[i],rankOrden[i],puntosOrden[i]
l.append(f)
d = {}
for i in range(len(l)): #Se utilizo el for para recorrer los elementos en el
rango del tamaño de aquella lista(l)
d[JugaSinRe[i]] = l[i]
archivo.close()
return d #Se retorna un diccionario con los datos del archivo de texto que
corresponde a las Estadisiticas del año

##Ejercicio2
def rankingsMaxs(dic): #Se implementa una funcion rankingsMaxs que recibe un
diccionario con la estructura anterior
for i in dic: #Se utilizo el for para recorrer aquellos elementos en el
diccionariio (dic)
rankingCu = min(dic[i]["ranks"])
puntosCu = max(dic[i]["puntos"])
dic[i]["ranks"]= rankingCu
dic[i]["puntos"]= puntosCu
dic[i]["total"] = dic[i]["puntos"] + (dic[i]["nTorneos"] * 0.10)
return dic #Retorna el diccionario con sus valores para las claves rank y
puntos que son los valores maximos para cada clave

###Ejercicio3
def cargarDatosPorPais(anio): #Se implementa una funcion cargarDatosPorPais que
recibe un entero anio
dici = rankingsMaxs(cargarDatos(anio))
paises = [] #Se creo una lista vacia de paises
for i in dici: #Se recorre los elementos en ese diccionario
pais = dici[i]["pais"]
if pais not in paises: #Si no se encuentra pais, entonces se va agregar
con "append" en la lista paises
paises.append(pais)
M = {}
for p in paises:
j = {}
for i in dici:
h = {}
if p == dici[i]["pais"]:
h["edad"],h["ntorneos"],h["rank"],h["puntos"],h["total"] = dici[i]
["edad"],dici[i]["nTorneos"],dici[i]["ranks"],dici[i]["puntos"],dici[i]["puntos"]+
(dici[i]["nTorneos"]*0.10)
j[i] = h
M[p] = j
return M #Retorna un diccionario con los datos del archivo de
texto

####Ejercicio4
def obtenerMejores(dicPorPais,pais,n,indicador): #Se implementa una funcion
obtenerMejores que recibe un diccionario con la estructura del ejercico3
JugaDatos = dicPorPais[pais]
l = [] #Lista vacia
for i in JugaDatos: #Recorre los elementos en JugaDatos
atributo = JugaDatos[i][indicador]
l.append(atributo) #Se los agrega atributo en la lista
vacia
l = sorted(l)
if indicador == "rank":
mayores = l[:n]
elif indicador == "puntos" or indicador == "ntorneos":
mayores = l[len(l) - n:len(l)]
mayores = mayores[::-1]
nombres = []
for j in mayores:
for d in JugaDatos:
if j == JugaDatos[d][indicador]:
nombres.append(d)
return nombres[:n] ##Retorna una lista con los nombres de los mejores
jugadores

#####PROGRAMA PRINCIPAL#####
anio = input("ingrese un año del 2010 - 2018: ")
anio = anio.strip()
años = ["2010","2011","2012","2013","2014","2015","2016","2017","2018"]
while not (anio.isnumeric() and anio in años):
print("ERROR!!!, Caracter invalido.")
anio = input("ingrese un año: ")

contador = 0
paisesss = []
for i in cargarDatosPorPais(int(anio)):
contador +=1
paisesss.append(i)
print(contador,") ",i)
Paiz = input("Ingrese las siglas de un pais: ")
Paiz = Paiz.upper().strip()
while Paiz not in paisesss:
print("ERROR!!!, Caracter invalido")
Paiz = input("Ingrese las siglas de un pais: ")

n = input("Ingrese un numero para el top: ")


n = n.strip()
while not n.isnumeric() and n>= len(cargarDatosPorPais(int(anio))[Paiz]):
print("ERROR!!!, Numero invalido")
n = input("Ingrese un numero para el top: ")

atrubi = ["rank","puntos","ntorneos"]
atri = input("Ingrese un atributo para saber el top: ")
atri = (atri.lower()).strip()
while not atri in atrubi:
print("ERROR!!!, Caracter invalido")
atri = input("Ingrese un atributo para saber el top: ")

diccionario3 = cargarDatosPorPais(int(anio))
print(" ")
print("Los jugadores del TOP",n,"del pais",Paiz,"que tienen mejores",atri,"son: ")
print(" ")
print(obtenerMejores(diccionario3,Paiz,int(n),atri))

#PARA LAS FUNCIONES 1 Y 2


diccionario = cargarDatos(int(anio))
diccionario2 = rankingsMaxs(diccionario)
print(" ")
print(" ")
print("EJERCICIO FUNCION 1----")
print(" ")
print(diccionario)
print(" ")
print(" ")
print("EJERCICIO FUNCION 2----")
print(" ")
print(diccionario2)

Vous aimerez peut-être aussi