0% encontró este documento útil (0 votos)
138 vistas5 páginas

Proyecto de Atletas Olímpicos en Python

Este documento describe un proyecto para crear una aplicación que almacene y gestione registros de atletas olímpicos desde 1992 hasta 2016. La aplicación permitirá cargar datos de atletas desde un archivo CSV, consultar atletas y medallas por año, país o evento, y calcular estadísticas como el país con más medallas o el atleta más exitoso. Se pide implementar funciones para cargar los datos, realizar consultas y cálculos estadísticos.

Cargado por

Melviisa
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
138 vistas5 páginas

Proyecto de Atletas Olímpicos en Python

Este documento describe un proyecto para crear una aplicación que almacene y gestione registros de atletas olímpicos desde 1992 hasta 2016. La aplicación permitirá cargar datos de atletas desde un archivo CSV, consultar atletas y medallas por año, país o evento, y calcular estadísticas como el país con más medallas o el atleta más exitoso. Se pide implementar funciones para cargar los datos, realizar consultas y cálculos estadísticos.

Cargado por

Melviisa
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Proyecto de Nivel 3

Atletas Olímpicos

Objetivo general
El objetivo general de este proyecto es que usted practique todos los conceptos estudiados en el nivel 3 del
curso.
Recuerde que este proyecto debe realizarse de forma completamente individual.

Objetivos específicos
1. Practicar la lectura y escritura de archivos con formato CSV.
2. Ejercitar la implementación de algoritmos de recorrido y modificación de listas.
3. Familiarizarse con la estructura compleja de datos de diccionarios dentro de listas.
4. Fomentar la habilidad de descomponer un problema en subproblemas y de implementar funciones que los
resuelven, lo que se conoce comúnmente como la técnica de “Dividir y Conquistar”.

Descripción de la aplicación
Los Juegos Olímpicos datan de la antigua Grecia. En esa época se realizaban como un evento cada 4 años en
honor al Dios Zeus. Los juegos de la antigüedad incluían disciplinas tales como carreras de estadio, lucha,
carreras de caballos y pentatlón. A finales de siglo XIX se organizaron por primera vez los juegos olímpicos
modernos, donde 14 países y 243 atletas participaron en 43 eventos que incluían atletismo, ciclismo, esgrima,
tenis, entre otros. En la actualidad los juegos incluyen más de 300 eventos y reúnen a más de 200 países y
11000 atletas. A pesar de que la situación mundial actual ha aplazado los juegos olímpicos a un poco más de un
año de distancia del día de hoy, hemos reunido esta información sobre los atletas, que puede ser de su interés,
y que esperamos le traiga algo de distracción durante esta cuarentena.

Se desea crear una aplicación para manejar y almacenar los registros de los atletas de algunas disciplinas desde
Barcelona 1992 hasta Rio de Janeiro 2016, y con esta información calcular estadísticas y encontrar datos de
interés sobre los atletas.

El programa debe ser capaz de recibir los atletas a partir de un archivo en formato CSV (Comma-Separated
Values) que tiene 7 columnas:
• El nombre del atleta inscrito en el evento.
• El género del atleta.
• La edad del atleta al momento de concursar en el evento.
• El país por el cuál compitió el atleta.
• El año en que se realizó el evento.
• El evento deportivo en que concursó el atleta.
• La medalla obtenida por el atleta (‘gold’, ‘silver’ o ‘bronze’).

Por ejemplo, el siguiente archivo sería válido para ser cargado dentro del sistema:
nombre,genero,edad,pais,anio,evento,medalla
a dijiang,m,24,china,1992,basketball men's basketball,na
a lamusi,m,23,china,2012,judo men's extra-lightweight,na
ragnhild margrethe aamodt,f,27,norway,2008,handball women's handball,gold

La aplicación debe permitir al usuario ejecutar las siguientes acciones:


1. Cargar un archivo con el listado de los atletas olímpicos.
2. Consultar los atletas de un año dado.
3. Consultar las medallas de un atleta dado, en un periodo de tiempo definido por el usuario (rango de
años).
4. Consultar todos los atletas de un país dado.
5. Consultar el país con más medallistas.
6. Consultar todos los atletas que han ganado una medalla dada en un evento dado.
7. Consultar los atletas más exitosos. Esto es, los nombres de los atletas que han obtenido más de un
número determinado de medallas (dado por el usuario) a lo largo de todos los años en los olímpicos y
la cantidad de medallas que ha ganado cada uno de ellos.
8. Consultar el atleta estrella de todos los tiempos. Esto es, el nombre del atleta que ha obtenido el
mayor número de medallas a lo largo de todos los años.
9. Consultar el país con mejor desempeño en un evento dado. Esto es: el país que más medallas de valor
(gold, silver y bronze) ha ganado en un evento determinado, en todos los tiempos.
10. Consultar el atleta más “Todoterreno”, es decir aquel que ha participado en más eventos diferentes a
lo largo de todos los años.
11. Consultar todos los medallistas de un país y de un género dados.
12. Consultar el porcentaje de medallistas entre todos los participantes, de todos los tiempos.

Actividad 0: Preparación del ambiente de trabajo


1. Cree una carpeta para trabajar, poniéndole su nombre o login.
2. Descargue de BrightSpace el archivo con el “esqueleto” del proyecto (n3-olimpicos-esqueleto.zip) y
descomprímalo en su carpeta de trabajo. El esqueleto consiste en un conjunto de archivos que usted va a
usar o a modificar.
3. Abra Spyder y cambie la carpeta de trabajo para que sea la carpeta con el esqueleto.

Actividad 1: Construir el módulo de funciones


Usando Spyder, cree en su carpeta de trabajo un nuevo archivo con el nombre “olimpicos.py”. En este archivo
usted va a construir el módulo en el que va a implementar las funciones que responden a los requerimientos
de la aplicación. Defina, documente e implemente las funciones descritas a continuación en su nuevo archivo.
Lea cuidadosamente las descripciones de las funciones, para determinar los
parámetros de entrada junto con sus tipos y el valor de retorno con su respectivo
tipo.
Función 1:
Implemente la función cargar_atletas que reciba como parámetro el nombre de un archivo que contiene la
información de los atletas y la cargue en el programa bajo la forma de una lista de diccionarios. Cada atleta se
va a representar utilizando un diccionario que tiene las siguientes llaves:
Llave Descripción de la llave
nombre Nombre del atleta inscrito al evento deportivo.
genero Género del atleta, puede ser “m” o “f”.
edad Edad del atleta al competir.
pais País por el cuál compitió el atleta.
anio Año de los juegos olímpicos.
evento Evento deportivo en el que concursó el atleta.
medalla Medalla ganada por el atleta en ese evento. Este valor puede ser “gold”,
“silver”, “bronze” o “na” en caso de no haber ganado medalla alguna.

Esta función debe retornar la lista de atletas (diccionarios) creada.

Función 2:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios), y un año de
interés, y retorne un diccionario, cuyas llaves sean los eventos deportivos en dicho año, y el valor de cada una
sea una lista con los nombres de los atletas que concursaron ese año en el evento.

Función 3:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios), un año de
inicio, un año final, y el nombre de un atleta de interés, y retorne una lista de diccionarios que represente las
medallas que ganó dicho atleta en ese periodo de tiempo. Cada diccionario debe tener 3 llaves: “evento”,
“anio” y “medalla”, cuyos valores son, como sus nombres lo indican, el nombre del evento en el que el atleta
ganó la medalla, el año en el cual el atleta obtuvo la medalla y la medalla obtenida (“gold”, “silver” o
“bronze”) .

Función 4:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios), y un país de
interés, y retorne una lista de diccionarios, que contenga la información de los atletas del país dado (sin
importar el año en que participaron los atletas). Cada diccionario debe tener 3 llaves: “nombre”, “evento” y
“anio”, cuyos valores son, como sus nombres los indican, el nombre del atleta, el evento en el que participó el
atleta y el año de dicho evento.

Función 5:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios), y retorne un
diccionario cuya llave sea el nombre del país que ha tenido más medallistas (en todos los tiempos de los juegos
olímpicos) y cuyo valor sea la cantidad de medallistas.

Función 6:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios), y un evento de
interés, y retorne una lista de cadenas de caracteres, que contenga los nombres de todos los atletas que han
ganado alguna medalla en el evento en cuestión (sin importar el año en que la obtuvieron). Si un atleta ha
ganado más de una medalla en este evento, no debe aparecer repetido el nombre de dicho atleta.

Función 7:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios), y un
determinado número de medallas, y retorne un diccionario con los atletas que han ganado una cantidad de
medallas superior al número dado por parámetro (en todos los tiempos). Este diccionario debe tener como
llaves los nombres de los atletas y como valores el número de medallas ganadas por el atleta correspondiente
(siempre y cuando ese número sea estrictamente superior al recibido por parámetro).

Función 8:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios), y retorne un
diccionario que represente al atleta estrella de todos los tiempos (esto es, el atleta que ha obtenido el mayor
número de medallas a lo largo de todos los años). Este diccionario debe tener como llave el nombre del atleta y
como valor el número de medallas ganadas. Si dos o más atletas se encuentran empatados, el diccionario debe
incluir dos o más llaves (nombres de los atletas) con sus respectivos números de medallas.

Función 9:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios) y el nombre de
un evento, y retorne el país que ha tenido mejor desempeño en dicho evento. Esto es: el país que más
medallas de valor ha ganado en un evento determinado, en todos los tiempos. Esto se determina por el
número y categoría de las medallas. Es decir, que el mejor país es aquel que tenga más medallas de oro, en
caso de empate con otro país, será mejor el que tenga más medallas de plata entre estos, y si el empate
persiste, se definirá por el número de medallas de bronce. La respuesta debe ser un diccionario, cuya llave sea
el nombre del país, y el valor sea una lista de 3 posiciones que indique el número de medallas ganadas de cada
tipo ([gold, silver, bronze]). Si se encuentran 2 o más países igual de exitosos y que sean el mejor, el diccionario
debe contenerlos a todos.

Función 10:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios), y retorne el
nombre del atleta más “Todoterreno”. Es decir, aquel que haya participado en más eventos diferentes a través
de los años. Para esta función solo debe contar una vez cada deporte, si un atleta participó en el mismo evento
en años diferentes, solo debe contarse como un evento único.

Función 11:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios), el nombre de
un país y un género (“m” o “f”), y retorne un diccionario con los medallistas de dicho país y género. Las llaves
del diccionario deben ser los nombres de cada atleta medallista, y los valores deben ser listas de diccionarios
que representen las medallas de dicho deportista. Estos últimos diccionarios (los que van dentro de cada lista)
deben tener 3 llaves: “evento”, “anio” y “medalla”, cuyos valores son, como sus nombres lo indican, el nombre
del evento en el que el atleta ganó la medalla, el año en el cual el atleta obtuvo la medalla y la medalla
obtenida (“gold”, “silver” o “bronze”).

A continuación, se muestra un ejemplo de cómo debe verse uno de los elementos del diccionario principal (el
de retorno de la función), con las medallas de Yuri Alvear (judoka colombiana) en los años 2012 y 2016:

{… , “yuri alvear orjuela”: [{“evento”: "judo women's middleweight", “anio”: 2012,


“medalla”: “bronze”}, {“evento”: "judo women's middleweight", “anio”: 2016,
“medulla”: “silver”}], …}

Función 12:
Implemente una función que reciba como parámetro la lista completa de atletas (diccionarios), y retorne el
porcentaje de atletas que ganaron alguna medalla (en todos los tiempos), con dos decimales de aproximación.
Cada atleta debe considerarse una sola vez así haya participado en varios eventos o en varios años. El
porcentaje es calculado de la siguiente manera:

Porcentaje Medallistas = Número de Medallistas / Número de Atletas

Actividad 2: Completar la interfaz de usuario basada en


consola
1. En esta actividad usted tiene que construir la interfaz basada en consola para que el usuario interactúe con
la aplicación. Para construir esta interfaz usted debe completar el archivo “consola_olimpicos.py”, el cual
ya tiene una parte implementada que le facilitará su trabajo. Usted debe modificar los elementos marcados
con la etiqueta TODO.
2. Pruebe la interfaz por consola ejecutando el archivo “consola_olimpicos.py”. Verifique que las
funcionalidades de su aplicación se comporten de acuerdo con lo esperado.
3. Pruebe cargando el archivo atletas.csv o cree su propio archivo de prueba respetando el mismo formato.

Entrega
1. Comprima la carpeta llamada “esqueleto” con su proyecto resuelto. El archivo debe llamarse “N3-PROY-
login.zip”, donde login es su nombre de usuario de Uniandes.
2. Entregue el archivo comprimido a través de BrightSpace en la actividad designada como “Proyecto N3”.

También podría gustarte