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
Branches master
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