Skip to content
Snippets Groups Projects
Commit dc48360b authored by Felipe Reyes Osorio's avatar Felipe Reyes Osorio
Browse files

Finished ejercicio 3 and added htmls

parent 339dbcec
No related branches found
No related tags found
No related merge requests found
File added
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
%% Cell type:markdown id: tags:
##### Felipe Reyes Osorio (@reyesf)
# Ejercicio 3
Con la función `newEntry` se puede poblar el diccionario. No era parte del ejercicio pero me facilitó el proceso.
Con la función `newEntry` se puede poblar el diccionario. No era parte del ejercicio pero me facilitó el proceso. Sirve para agregar una nueva entrada, pasando un string con la información separada por /. Una vez tuve todos los datos usé `pickle` para guardarlo como un archivo que se puede cargar.
* reyesf/Felipe/Reyes/Colombia/Cali/22/Univalle/Gimnasio
* varelaj/Jalil/Varela/Colombia/Palmira/21/Univalle/Age of mythology
* vargass/Sasiri Juliana/Vargas/Colombia/Cali/20/Univalle/Bailar
* britod/Daniel Arturo/Brito/Venezuela/Caracas/26/UCV/Patineta
* bermudezj/Jesus David/Bermudez/Colombia/Bogotá/25/Unal/Senderismo
* acerot/Tatiana/Acero/Colombia/Bogotá/23/Unal/Anime
* gomezc/Carla Elena/Gomez/Venezuela/Caracas/27/USB/Bicicleta
* floreza/Andrés David/Florez/Colombia/Cali/22/Univalle/Movement Culture
* cristian.velandia/Cristian/Velandia/Colombia/Bogotá/27/Unal/Anime
%% Cell type:code id: tags:
``` python
import pickle
* juan-pineda/Juan Carlos/Basto/Colombia/Bucaramanga/37/UIS/Dibujar
#file = open("compas.txt", "wb") # Quitar comentario para
#pickle.dump(compas, file) # guardar el diccionario
#file.close() # en caso de cambios.
file = open("./compas.txt", "rb")
compas = pickle.load(file)
file.close()
```
%% Cell type:code id: tags:
``` python
def newEntry(d):
info = input(r"Info de nueva entrada (sep. por /)")
info = info.split("/")
print(info)
#info = matter/nombre/apellido/pais/residencia/edad/institucion/hobbie
subd = {"nombre": info[1],
"apellido":info[2],
"país":info[3],
"residencia":info[4],
"edad":info[5],
"institución":info[6],
"hobbie":info[7]
}
d[info[0]] = subd
```
%% Cell type:code id: tags:
%% Cell type:markdown id: tags:
``` python
compas = {}
```
Como ya está lleno el diccionario, no es necesario agregar más entradas. Sin embargo, nuevos `compas` pueden ser agregados con la función.
%% Cell type:code id: tags:
``` python
newEntry(compas)
#newEntry(compas)
```
%% Output
Info de nueva entrada (sep. por /)vargass/Sasiri/Vargas/Colombia/Cali/20/Univalle/Bailar
['vargass', 'Sasiri', 'Vargas', 'Colombia', 'Cali', '20', 'Univalle', 'Bailar']
%% Cell type:markdown id: tags:
Definimos las tres funciones que se piden. Todas usan el mismo principio de iterar sobre las llaves de `compas`, e inspeccionar los contenidos de cada una.
Ahora sí definimos las tres funciones que se piden. Todas usan el mismo principio de iterar sobre las llaves de `compas`, e inspeccionar los contenidos de cada una.
* La primera retorna una lista con los miembros del país seleccionado. Esta lista está lista para tabular.
* La segunda promedia las edades de todos en `compas`.
* La tercera retorna las instituciones de los `compas` y usamos un set para evitar entradas duplicadas.
%% Cell type:code id: tags:
``` python
def sortPais(d, pais):
names = []
for matter in d:
if d[matter]["país"] == pais:
names.append(matter)
final = []
for matter in names:
datos = [d[matter][datum] for datum in d[matter]]
datos.append(matter)
final.append(datos)
return final
def edadMedia(d):
prom = []
for matter in d:
prom.append(float(compas[matter]["edad"]))
print(sum(prom)/len(prom))
def instit(d):
instituciones = set()
for matter in d:
instituciones.add(compas[matter]["institución"])
print(instituciones)
```
%% Cell type:markdown id: tags:
Para tabular importamos la librería `tabular` y definimos un array con los títulos. Para ello iteramos sobre las llaves de cualquier entrada de `compas`.
Para tabular importamos la librería `tabular` y definimos un array con los títulos. Para ello iteramos sobre las llaves de cualquier entrada de `compas`. En este caso tabulamos todos los `compas` de Colombia, pero cambiando el argumento de `sortPais` se puede hacer para otro país.
Finalmente se muestran la edad media, y el set de instituciones.
%% Cell type:code id: tags:
``` python
from tabulate import tabulate
```
%% Cell type:code id: tags:
``` python
datosParaTabla = sortPais(compas, "Colombia")
titulos = [key for key in compas["reyesf"]]
titulos.append("mattermost")
tabla = tabulate(datosParaTabla, headers = titulos,tablefmt='presto')
print(tabla)
```
%% Output
nombre | apellido | país | residencia | edad | institución | hobbie | mattermost
----------+------------+----------+--------------+--------+---------------+------------------+--------------
Felipe | Reyes | Colombia | Cali | 22 | Univalle | Gimnasio | reyesf
Jalil | Varela | Colombia | Palmira | 21 | Univalle | Age of mythology | varelaj
Sasiri | Vargas | Colombia | Cali | 20 | Univalle | Bailar | vargass
nombre | apellido | país | residencia | edad | institución | hobbie | mattermost
----------------+------------+----------+--------------+--------+---------------+------------------+-------------------
Felipe | Reyes | Colombia | Cali | 22 | Univalle | Gimnasio | reyesf
Jalil | Varela | Colombia | Palmira | 21 | Univalle | Age of mythology | varelaj
Sasiri Juliana | Vargas | Colombia | Cali | 20 | Univalle | Bailar | vargass
Jesus David | Bermudez | Colombia | Bogotá | 25 | Unal | Senderismo | bermudezj
Tatiana | Acero | Colombia | Bogotá | 23 | Unal | Anime | acerot
Andrés David | Florez | Colombia | Cali | 22 | Univalle | Movement Culture | floreza
Cristian | Velandia | Colombia | Bogotá | 27 | Unal | Anime | cristian.velandia
Juan Carlos | Basto | Colombia | Bucaramanga | 37 | UIS | Dibujar | juan-pineda
%% Cell type:code id: tags:
``` python
edadMedia(compas)
```
%% Output
21.0
28.166666666666668
%% Cell type:code id: tags:
``` python
instit(compas)
```
%% Output
{'Univalle'}
{'UIS', 'Univalle', 'UNMSM', 'USB', 'Unal', 'UCV'}
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
%% Cell type:code id: tags:
``` python
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment