EJERCICIO1_PROG_GISG_EXTRAORDINARIO_2021
Primer ejercicio resuelto y comentado del examen extraordinario de Programación de GISDunknown
python
3 years ago
4.0 kB
7
Indexable
import csv
#EJERCICIO 1
def obtener_equipos(csv_reader: csv) -> list[ str ]:
'''
Obtenemos todos los equipos diferentes del archivo CSV.
'''
equipos = []
cursor: bool = True
lineas_equipo: dict[equipos : str] = []
for row in csv_reader:
if cursor:
'''
No procesamos la primera línea del CSV pues contiene los nombres de
las columnas.
'''
cursor = False
continue
for i in range(0,2):
if row[i] not in equipos:
equipos.append(row[i])
#(equipos.append(row[i] ) for i in row[0:1] if row[i] not in equipos)
cursor += 1
return equipos, lineas_equipo
def obtener_resultados(equipo: str, lineas: list[ list [ str ]]) -> list[ str ]:
'''
Itera sobre las líneas del archivo CSV que contienen un equipo determinado,
sin ese equipo, obteniendo el conjunto de resultados que tiene cada segundo
equipo:
EJEMPLO
Si tenemos que lineas son las lineas del archivo CSV en las que ha jugado
españa, quitando la columna "españa", obtenemos los resultados donde el
otro equipo es Italia, Croacia, etc.
-Portugal,España,0-1 --> Portugal,0-1
'''
resultados: list[ str ] = []
for linea in lineas:
if equipo == linea[0]:
#Ahora solo hay un equipo, por lo que se encuentra en la pos 1.
resultados.append(linea[2])
return resultados
def obtener_diccionario(equipo: str, csv_reader: csv, equipos: list[ str ]) -> dict:
'''
Para un equipo determinado ({equipo}) obtenemos el diccionario correspondiente
a los resultados que ha tenido {equipo} con los demás equipos según la
información del archivo CSV.
'''
diccionario_equipo: dict[str : list[ str ]] = {}
contrincantes_lineas: list[ str ] = []
for row in csv_reader:
'''
Guardo todas las líneas donde aparece {equipo}, y las guardo sin {equipo}.
'''
for i in range(0,1): #{equipo} está en la 1ra o 2da columna.
if row[i] == equipo:
'''
Si equipo está en posición 1, entonces borro posición 1.
Si está en 2,borro posición 2.
'''
row_aux = row
row.remove(i)
contrincantes_lineas.append(row_aux)
for equipo_2 in equipos:
'''
Obtengo todos los resultados de equipo_2 contra equipo:
'''
diccionario_equipo[equipo_2] = obtener_resultados(equipo_2,
contrincantes_lineas
)
return diccionario_equipo
def ej_1 (ruta: str) -> dict[ str : dict[ str : list[ str ] ] ]:
with open("prueba.csv", encoding = "utf_8") as file:
csv_reader: csv = csv.reader( file, delimiter = ',')
#Obtengo la lista de todos los equipos diferentes:
equipos: list = obtener_equipos(csv_reader)
#Inicializo diccionario que devolverá la función:
dict_return: str = {}
for equipo in equipos:
'''
Relleno los valores del diccionario, con otros diccionarios en función
del equipo.
'''
dict_return[equipo] = obtener_diccionario(equipo,
csv_reader,
equipos
)
pass
file.close()
return dict_return
#EJERCICIO 2
def probabilidad_victoria(diccionario: dict, seleccion: str, contrincante: str):
pass
#EJERCICIO 3
class Partido():
passEditor is loading...