"# *Mi nombre es Jesus David Bermudez Sanchez, soy estudiante de la Maestria en Fisica de la Universidad Nacional de Colombia, Sede Bogotá*\n",
"# *Mi nombre es Jesus David Bermudez Sanchez y soy estudiante de la Maestria en Fisica de la Universidad Nacional de Colombia, Sede Bogotá*\n",
"\n",
"---"
]
...
...
@@ -44,7 +44,7 @@
},
{
"cell_type": "code",
"execution_count": 88,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -87,7 +87,7 @@
},
{
"cell_type": "code",
"execution_count": 89,
"execution_count": 3,
"metadata": {},
"outputs": [
{
...
...
@@ -103,7 +103,7 @@
" 'hobbie': 'gimnasio'}"
]
},
"execution_count": 89,
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -114,7 +114,7 @@
},
{
"cell_type": "code",
"execution_count": 90,
"execution_count": 4,
"metadata": {},
"outputs": [
{
...
...
@@ -130,7 +130,7 @@
" 'hobbie': 'correr, natacion, leer'}"
]
},
"execution_count": 90,
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
...
...
@@ -146,26 +146,26 @@
"source": [
"---\n",
"### Solucion a la parte 2\n",
"En la siguiente celda creamos una funcion que llamamos `info_por_paises`, la cual recibe tres argumentos. El primero es el diccionario compas que creamos anteriormente. El segundo es una variable de tipo _string_ donde escribimos el pais de origen de las personas. El tercer y ultimo argumento es una variable de tipo _bool_ cuyo valor por defecto es `False`; si el ususario ingresa `True`, entre la informacion que imprime la funcion, estará el usuario de mattermost.\n",
"En la siguiente celda creamos una funcion que llamamos `info_por_paises(dicc,pais,usuario)`, la cual recibe tres argumentos. El primero es el diccionario compas que creamos anteriormente. El segundo es una variable de tipo _string_ donde escribimos el pais de origen de las personas. El tercer y ultimo argumento es una variable de tipo _bool_ cuyo valor por defecto es `False`; si el ususario ingresa `True`, entre la informacion que imprime la funcion, estará el usuario de mattermost.\n",
"\n",
"Lo primero que hace esta función es, hacer una copia del diccionario x usando el metodo `.copy()`.A esta copia la llame `copia_compas`.\n",
"\n",
"Esto lo hice porque _creo_ que asi evito posibles problemas.\n",
"\n",
"La siguiente linea ejecuta el metodo `.items` del diccionario `copia_compas`. Esto crea una lista cuyos elementos son las tuplas `(llave,valor)`. Con esta lista es con la que trabaja la funcion.\n",
"La siguiente linea ejecuta el metodo `.items` del diccionario `copia_compas`. Este metodo crea una lista cuyos elementos son las tuplas `(llave,valor)`. Con esta lista es con la que trabaja la funcion.\n",
"(_Basicamente, converti el diccionario compas en una lista_). A esta lista la llame `keys_and_values`.\n",
"\n",
"Es importante entender que en las tuplas de la lista `keys_and_values`, el primer elemento es un _string_, y que el segundo elemento es un diccionario de Python.\n",
"\n",
"Para añadir el usuario de mmattermost, comprobamos si la variable _bool_ z es `True`. En caso afirmativo, hacemos un loop por la lista `keys_and_values`, añadiendo a cada uno de los diccionarios (`values`) una nueva llave llamada `usuario mattermost`, cuyo valor será la correspondiente llave (`key`).\n",
"Para añadir el usuario de mattermost, comprobamos si la variable _bool_ ``z`` es `True`. En caso afirmativo, hacemos un loop por la lista `keys_and_values`, añadiendo a cada uno de los diccionarios (`values`) una nueva llave llamada `usuario mattermost`, cuyo valor será la correspondiente llave (`key`).\n",
"\n",
"Para imprimir la informacion de las personas segun su pais de origen. Hacemos un ciclo for que \"recorre\" cada una de las tuplas en la lista `keys_and_values`. \n",
"En cada iteración se comprueba si el valor de la llave `\"pais\"` del diccionario coincide con el pais que introdujo el usuario. En caso afirmativo, se imprime \"apropiadamente\" el contenido del diccionario.\n"
"Para imprimir la informacion de las personas segun su pais de origen. Hacemos un ciclo `for` que \"recorre\" cada una de las tuplas en la lista `keys_and_values`. \n",
"En cada iteración se comprueba si el **valor** de la llave `\"pais\"` del diccionario coincide con el pais que introdujo el usuario. En caso afirmativo, se imprime \"apropiadamente\" el contenido del diccionario.\n"
]
},
{
"cell_type": "code",
"execution_count": 91,
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -217,7 +217,7 @@
},
{
"cell_type": "code",
"execution_count": 92,
"execution_count": 6,
"metadata": {},
"outputs": [
{
...
...
@@ -277,13 +277,22 @@
"residencia : Caracas\n",
"especialidad cientifica : Geofísica\n",
"institucion : Universidad Central de Venezuela\n",
"hobbie : Artes Marciales\n",
"\n"
"hobbie : Artes Marciales\n"
]
},
{
"data": {
"text/plain": [
"''"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(info_por_paises(compas,\"Venezuela\")) "
"info_por_paises(compas,\"Venezuela\")"
]
},
{
...
...
@@ -296,7 +305,7 @@
},
{
"cell_type": "code",
"execution_count": 93,
"execution_count": 7,
"metadata": {},
"outputs": [
{
...
...
@@ -322,18 +331,39 @@
"especialidad cientifica : Fisica del Estado Solido\n",
"institucion : Universidad Nacional Mayor de San Marcos\n",
"hobbie : correr, natacion, leer\n",
"usuario mattermost : mamaniy\n",
"\n"
"usuario mattermost : mamaniy\n"
]
},
{
"data": {
"text/plain": [
"''"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(info_por_paises(compas,\"Perú\",True)) "
"info_por_paises(compas,\"Perú\",True) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Solucion a la parte 3\n",
"\n",
"Para obtener el promedio de las edades de las personas, creamos una función llamada `promedio_edad_compas(dic)`, la cual toma como argumento el diccionario compas.\n",
"Luego, usando el metodo `.values()` del diccionario `dic`, creamos una lista que contiene todos los diccionarios con la informacion de las personas.\n",
"Usando _list_comprehension_ creamos una lista donde guardamos las edades de las personas.\n",
"Finalmente, usamos la funcion `sum()` incorporada en Python para sumar los elementos en la lista `edades`; y dividimos entre el numero de elementos de la lista usando la funcion `len()`."
]
},
{
"cell_type": "code",
"execution_count": 94,
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -352,24 +382,41 @@
},
{
"cell_type": "code",
"execution_count": 95,
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"27.615384615384617\n"
"El promedio de edad de las personas en el diccionario compas es 27.615384615384617\n"
]
}
],
"source": [
"print(promedio_edad_compas(compas))"
"print(\"El promedio de edad de las personas en el diccionario compas es\",promedio_edad_compas(compas))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Solucion a la parte 4\n",
"\n",
"El procedimiento para obtener las instituciones donde estudian y/o trabajan los compas es muy similar al caso anterior. \n",
"\n",
"Creamos una funcion llamada `instituciones_compas(dic)` la cual recibe como argumento el diccionario compas. \n",
"\n",
"Guardamos en una lista los diccionarios que contienen la información de las personas usando el metodo `.values()`.\n",
"\n",
"Usamos la función `set()` para quitar las instituciones repetidas de la lista anterior.\n",
"\n",
"Imprimimos los elementos del conjunto `set_insti` de manera que se vea una institucion por linea."
]
},
{
"cell_type": "code",
"execution_count": 96,
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -382,7 +429,7 @@
" \n",
" dicc_personas=x.values()\n",
" \n",
" # Hago una lista de las instituciones donde estudian y/0 trabajan los compas\n",
" # Hago una lista de las instituciones donde estudian y/o trabajan los compas\n",
" # Esta lista puede contener elementos repetidos\n",
" lista_insti=[dicc[\"institucion\"] for dicc in dicc_personas]\n",
"+ Imprimir bonito el contenido de un diccionario: https://thispointer.com/python-4-ways-to-print-items-of-a-dictionary-line-by-line/"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Esto sale si el argumento es True\n"
"CNRS\n",
"Universidad Nacional Mayor de San Marcos\n"
]
},
{
...
...
@@ -447,28 +466,23 @@
"''"
]
},
"execution_count": 98,
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def f_prueba(ss=False):\n",
" if ss:\n",
" print(\"Esto sale si el argumento es True\")\n",
" else:\n",
" print(\"Esto sale si el argumento es False\")\n",
" return \"\"\n",
"\n",
"f_prueba(True)"
"instituciones_compas(compas)"
]
},
{
"cell_type": "code",
"execution_count": null,
"cell_type": "markdown",
"metadata": {},
"outputs": [],
"source": []
"source": [
"### Bibliografia\n",
"\n",
"+ Imprimir bonito el contenido de un diccionario: https://thispointer.com/python-4-ways-to-print-items-of-a-dictionary-line-by-line/"
]
}
],
"metadata": {
...
...
%% Cell type:markdown id: tags:
# *Mi nombre es Jesus David Bermudez Sanchez, soy estudiante de la Maestria en Fisica de la Universidad Nacional de Colombia, Sede Bogotá*
# *Mi nombre es Jesus David Bermudez Sanchez y soy estudiante de la Maestria en Fisica de la Universidad Nacional de Colombia, Sede Bogotá*
---
%% Cell type:markdown id: tags:
# Amigos congueros
## El problema que se debe resolver presenta el siguiente enunciado:
Entre en contacto con 10 estudiantes del curso de datos y 2 profesores o personal de soporte de LaConga, uno del curso de datos y otro de afuera, y consulte su nombre completo, su nombre de usuario en mattermost, edad, pais de origen, ciudad donde residen, su especialidad científica, nombre del instituto en que estudian/laboran, y un hobbie o afición
+ ## Parte 1
Cree un diccionario llamado “compas”, donde la llave sea el nombre de usuario en mattermost,y si depliego el valor almacenado, por ejemplo en compas[“juan-pineda”], lo que obtengo esa la vez otro diccionario, con las llaves “nombre”, “apellido”, “país”, “residencia”, “edad”,“institución”, “hobbie”
+ ## Parte 2
Cree una función que reciba como entrada el diccionario y un país de origen, y retorne las informaciones completas de todas las personas de ese país, tabuladas en una forma fácil de entender.
+ ## Parte 3
Busque una forma de calcular, a partir del diccionario, el promedio de edad de todas las personas en él.
+ ## Parte 4
Busque una forma de mostrar todas las instituciones (sin repetición)
%% Cell type:markdown id: tags:
---
En la siguiente celda creamos el diccionario `compas` con la informacion que recolectamos.
Debe haber una forma de poder cargar esta informacion desde un archivo `.txt`, pero aun no la reviso.
%% Cell type:code id: tags:
``` python
compas={
"juan-pineda":
{"nombres":"Juan Carlos","apellidos":"Basto Pineda","edad":30,"pais":"Colombia","residencia":"Santander","especialidad cientifica":"Astronomia","institucion":"Universidad Industrial de Santander","hobbie":"divulgacion cientifica"},
"camacho.reina":
{"nombres":"Reina","apellidos":"Camacho Toro","edad":35,"pais":"Venezuela","residencia":"Francia","especialidad cientifica":"Fisica Experimental","institucion":"CNRS","hobbie":"avistamiento de aves"},
"britod":
{"nombres":"Daniel Arturo","apellidos":"Brito Urbina","edad":26,"pais":"Venezuela","residencia":"Caracas","especialidad cientifica":"Teorias de Campos","institucion":"Universidad Central de Venezuela","hobbie":"Patinetas, Bicicletas y Video juegos"},
"carrilloj":
{"nombres":"Juan Guillermo","apellidos":"Carrillo Reyes","edad":25,"pais":"Colombia","residencia":"Bogota","especialidad cientifica":"Astronomia","institucion":"Universidad Nacional de Colombia","hobbie":"Basket y Videojuegos"},
{"nombres":"Carla Elena","apellidos":"Gomez Alvarado","edad":27,"pais":"Venezuela","residencia":"Caracas","especialidad cientifica":"Fisica Molecular","institucion":"Universidad Simon Bolivar","hobbie":"Andar en bicicleta, Electronica, Gastronomia"},
"leonl":
{"nombres":"Luis Alberto","apellidos":"Leon Andonayre","edad":22,"pais":"Perú","residencia":"Provincia Constituciona del Callao","especialidad cientifica":"Gravitacion","institucion":"Universidad Nacional Mayor de San Marcos","hobbie":"Escuchar musica y tocar la guitarra"},
"mamaniy"
:{"nombres":"Yhony","apellidos":"Mamamni Arce","edad":26,"pais":"Perú","residencia":"Lima","especialidad cientifica":"Fisica del Estado Solido","institucion":"Universidad Nacional Mayor de San Marcos","hobbie":"correr, natacion, leer"},
"navasa":
{"nombres":"Alfonso","apellidos":"Navas","edad":24,"pais":"Colombia","residencia":"Bogota","especialidad cientifica":"Fisica de Sistemas Complejos, Ecologia","institucion":"Universidad Nacional de Colombia","hobbie":"crossfit"},
"pinzonc":
{"nombres":"Carlos Andres","apellidos":"Pinzon Osorio","edad":30,"pais":"Colombia","residencia":"Bogotá","especialidad cientifica":"Altas Energias","institucion":"Universidad Antonio Nariño","hobbie":"Atletismo"},
"ramosm":
{"nombres":"Maria Jose","apellidos":"Ramos Sotillo","edad":23,"pais":"Venezuela","residencia":"Merida","especialidad cientifica":"Fisica","institucion":"Universidad de los Andes","hobbie":"escribir"},
"reyesf":
{"nombres":"Felipe","apellidos":"Reyes","edad":22,"pais":"Colombia","residencia":"Cali","especialidad cientifica":"Materia Condensada","institucion":"Universidad del Valle","hobbie":"gimnasio"},
"semprumg":
{"nombres":"Gerardo Jesus","apellidos":"Semprum Suarez","edad":24,"pais":"Venezuela","residencia":"Caracas","especialidad cientifica":"Geofísica","institucion":"Universidad Central de Venezuela","hobbie":"Artes Marciales"},
}
```
%% Cell type:markdown id: tags:
### Algunos ejemplos de como se imprime la informacion de las personas
%% Cell type:code id: tags:
``` python
compas["reyesf"]
```
%% Output
{'nombres': 'Felipe',
'apellidos': 'Reyes',
'edad': 22,
'pais': 'Colombia',
'residencia': 'Cali',
'especialidad cientifica': 'Materia Condensada',
'institucion': 'Universidad del Valle',
'hobbie': 'gimnasio'}
%% Cell type:code id: tags:
``` python
# Usando tab completa el nombre de la key. Curioso
compas["mamaniy"]
```
%% Output
{'nombres': 'Yhony',
'apellidos': 'Mamamni Arce',
'edad': 26,
'pais': 'Perú',
'residencia': 'Lima',
'especialidad cientifica': 'Fisica del Estado Solido',
'institucion': 'Universidad Nacional Mayor de San Marcos',
'hobbie': 'correr, natacion, leer'}
%% Cell type:markdown id: tags:
---
### Solucion a la parte 2
En la siguiente celda creamos una funcion que llamamos `info_por_paises`, la cual recibe tres argumentos. El primero es el diccionario compas que creamos anteriormente. El segundo es una variable de tipo _string_ donde escribimos el pais de origen de las personas. El tercer y ultimo argumento es una variable de tipo _bool_ cuyo valor por defecto es `False`; si el ususario ingresa `True`, entre la informacion que imprime la funcion, estará el usuario de mattermost.
En la siguiente celda creamos una funcion que llamamos `info_por_paises(dicc,pais,usuario)`, la cual recibe tres argumentos. El primero es el diccionario compas que creamos anteriormente. El segundo es una variable de tipo _string_ donde escribimos el pais de origen de las personas. El tercer y ultimo argumento es una variable de tipo _bool_ cuyo valor por defecto es `False`; si el ususario ingresa `True`, entre la informacion que imprime la funcion, estará el usuario de mattermost.
Lo primero que hace esta función es, hacer una copia del diccionario x usando el metodo `.copy()`.A esta copia la llame `copia_compas`.
Esto lo hice porque _creo_ que asi evito posibles problemas.
La siguiente linea ejecuta el metodo `.items` del diccionario `copia_compas`. Esto crea una lista cuyos elementos son las tuplas `(llave,valor)`. Con esta lista es con la que trabaja la funcion.
La siguiente linea ejecuta el metodo `.items` del diccionario `copia_compas`. Este metodo crea una lista cuyos elementos son las tuplas `(llave,valor)`. Con esta lista es con la que trabaja la funcion.
(_Basicamente, converti el diccionario compas en una lista_). A esta lista la llame `keys_and_values`.
Es importante entender que en las tuplas de la lista `keys_and_values`, el primer elemento es un _string_, y que el segundo elemento es un diccionario de Python.
Para añadir el usuario de mmattermost, comprobamos si la variable _bool_ z es `True`. En caso afirmativo, hacemos un loop por la lista `keys_and_values`, añadiendo a cada uno de los diccionarios (`values`) una nueva llave llamada `usuario mattermost`, cuyo valor será la correspondiente llave (`key`).
Para añadir el usuario de mattermost, comprobamos si la variable _bool_ ``z`` es `True`. En caso afirmativo, hacemos un loop por la lista `keys_and_values`, añadiendo a cada uno de los diccionarios (`values`) una nueva llave llamada `usuario mattermost`, cuyo valor será la correspondiente llave (`key`).
Para imprimir la informacion de las personas segun su pais de origen. Hacemos un ciclo for que "recorre" cada una de las tuplas en la lista `keys_and_values`.
En cada iteración se comprueba si el valor de la llave `"pais"` del diccionario coincide con el pais que introdujo el usuario. En caso afirmativo, se imprime "apropiadamente" el contenido del diccionario.
Para imprimir la informacion de las personas segun su pais de origen. Hacemos un ciclo `for` que "recorre" cada una de las tuplas en la lista `keys_and_values`.
En cada iteración se comprueba si el **valor** de la llave `"pais"` del diccionario coincide con el pais que introdujo el usuario. En caso afirmativo, se imprime "apropiadamente" el contenido del diccionario.
%% Cell type:code id: tags:
``` python
definfo_por_paises(x,y,z=False):
"""
Esta funcion recibe el diccionario compas en el primer argumento,
una variable de tipo string con el pais de origen y una
variable Booleana si el usuario desea que en la información que
se imprime, aparezca ademas de todo, el usuario de Mattermost
Retorna la informacion de las personas originarias del pais ingresado en la variable y.
"""
# Hago una copia del diccionario compas
copia_compas=x.copy()
# Saco la lista de (key,values)
keys_and_values=copia_compas.items()
# Esta parte añade la key="usuario mattermost"
# a los diccionarios que contienen la informacion
# de los compas.
ifz:
fora,binkeys_and_values:
b["usuario mattermost"]=a
# Miro en cada "subdiccionario" el pais de origen,
# si este coincide con el pais que se pidio, se imprime el subdiccionario
especialidad cientifica : Fisica del Estado Solido
institucion : Universidad Nacional Mayor de San Marcos
hobbie : correr, natacion, leer
usuario mattermost : mamaniy
''
%% Cell type:markdown id: tags:
## Solucion a la parte 3
Para obtener el promedio de las edades de las personas, creamos una función llamada `promedio_edad_compas(dic)`, la cual toma como argumento el diccionario compas.
Luego, usando el metodo `.values()` del diccionario `dic`, creamos una lista que contiene todos los diccionarios con la informacion de las personas.
Usando _list_comprehension_ creamos una lista donde guardamos las edades de las personas.
Finalmente, usamos la funcion `sum()` incorporada en Python para sumar los elementos en la lista `edades`; y dividimos entre el numero de elementos de la lista usando la funcion `len()`.
%% Cell type:code id: tags:
``` python
defpromedio_edad_compas(x):
"""
Esta funcion recibe como unico argumento el diccionario compas.
Retorna el promedio de las edades
"""
sub_diccionarios=x.values()
edades=[value["edad"]forvalueinsub_diccionarios]
returnsum(edades)/len(edades)
```
%% Cell type:code id: tags:
``` python
print(promedio_edad_compas(compas))
print("El promedio de edad de las personas en el diccionario compas es",promedio_edad_compas(compas))
```
%% Output
27.615384615384617
El promedio de edad de las personas en el diccionario compas es 27.615384615384617
%% Cell type:markdown id: tags:
## Solucion a la parte 4
El procedimiento para obtener las instituciones donde estudian y/o trabajan los compas es muy similar al caso anterior.
Creamos una funcion llamada `instituciones_compas(dic)` la cual recibe como argumento el diccionario compas.
Guardamos en una lista los diccionarios que contienen la información de las personas usando el metodo `.values()`.
Usamos la función `set()` para quitar las instituciones repetidas de la lista anterior.
Imprimimos los elementos del conjunto `set_insti` de manera que se vea una institucion por linea.
%% Cell type:code id: tags:
``` python
definstituciones_compas(x):
"""
Esta funcion recibe como unico argumento el diccionario compas.
Retorna las instituciones de las personas sin repeticion
"""
dicc_personas=x.values()
# Hago una lista de las instituciones donde estudian y/0 trabajan los compas
# Hago una lista de las instituciones donde estudian y/o trabajan los compas