"- Entre en contacto con 10 estudiantes del curso de datos y 2 profesores o personal de soporte\n",
"de LaConga, uno del curso de datos y otro de afuera, y consulte su nombre completo, su\n",
"nombre de usuario en mattermost, edad, pais de origen, ciudad donde residen, su especialidad\n",
"científica, nombre del instituto en que estudian/laboran, y un hobbie o afición.\n",
"- Cree un diccionario llamado “compas”, donde la llave sea el nombre de usuario en mattermost,\n",
"y si depliego el valor almacenado, por ejemplo en compas[“juan-pineda”], lo que obtengo es\n",
"a la vez otro diccionario, con las llaves “nombre”, “apellido”, “país”, “residencia”, “edad”,\n",
"“institución”, “hobbie”.\n",
"- Cree una función que reciba como entrada el diccionario y un país de origen, y retorne las\n",
"informaciones completas de todas las personas de ese país, tabuladas en una forma fácil de\n",
"entender. -Busque una forma de calcular, a partir del diccionario, el promedio de edad de\n",
"todas las personas en él, y una forma de mostrar todas las instituciones (sin repetición)\n",
"\n",
"**Solución:** Hola! Mi nombre es Sebastian Ordoñez (ordonezs). Para tratar este problema opté por apuntar directamente los datos recolectados en un diccionario y trabajar tres funciones independientes de acuerdo a lo solicitado en el enunciado."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Primera parte (Encontrar a los amigos congueros)\n",
"\n",
"A continuación se encuentra una lista con los participantes y sus respectivos datos:\n",
"\n",
"1. hernandezj \n",
" - Juan \n",
" - Hernandez\n",
" - 24\n",
" - Colombia\n",
" - Bogota\n",
" - Electrodinámica Cuántica\n",
" - Universidad Nacional de Colombia\n",
" - Leer\n",
"2. acerot\n",
" - Tatiana\n",
" - Acero\n",
" - 23\n",
" - Colombia\n",
" - Bogota\n",
" - Mecánica Celeste Relativista\n",
" - Universidad Nacional de Colombia\n",
" - Anime\n",
"3. ladinoj\n",
" - Jose\n",
" - Ladino\n",
" - 24\n",
" - Colombia\n",
" - Bogota\n",
" - Mecanica Celeste Relativista\n",
" - Universidad Nacional de Colombia\n",
" - Skate\n",
"4. navasa\n",
" - Alfonso\n",
" - Navas\n",
" - 24\n",
" - Colombia\n",
" - Bogota\n",
" - Física de Sistemas Complejos\n",
" - Universidad Nacional de Colombia\n",
" - Crossfit\n",
"5. ramosd\n",
" - David\n",
" - Ramos\n",
" - 23\n",
" - Colombia\n",
" - Bucaramanga\n",
" - Física Estadística\n",
" - Universidad Industrial de Santander\n",
" - Tocar música rock\n",
"6. grisalesj\n",
" - Jennifer\n",
" - Grisales\n",
" - 24\n",
" - Colombia\n",
" - Cúcuta\n",
" - Astropartículas\n",
" - Universidad Industrial de Santander\n",
" - Divulgación científica\n",
"7. juan-pineda\n",
" - Juan\n",
" - Pineda\n",
" - 30\n",
" - Colombia\n",
" - Bucaramanga\n",
" - Astronomía Extragaláctica\n",
" - Universidad Industrial de Santander\n",
" - Divulgación científica\n",
"8. jalil\n",
" - Jalil\n",
" - Valera\n",
" - 23\n",
" - Colombia\n",
" - Cali\n",
" - Teoría cuántica de campos\n",
" - Universidad del Valle\n",
" - Leer\n",
"9. camacho.reina\n",
" - Reina\n",
" - Camacho\n",
" - 33\n",
" - Venezuela\n",
" - Paris\n",
" - Física experimental de partículas\n",
" - French National Center for Scientific Research\n",
" - Divulgación Científica\n",
"10. ortegaj\n",
" - Jennifer\n",
" - Ortega\n",
" - 24\n",
" - Ecuador\n",
" - Quito\n",
" - Ciencia computacional\n",
" - Escuela Politécnica Nacional en Ecuador\n",
" - Hiking\n",
"11. vargass\n",
" - Sasiri\n",
" - Vargas\n",
" - 24\n",
" - Colombia\n",
" - Cali\n",
" - Simulación\n",
" - Universidad del Valle\n",
" - Bailar\n",
"12. aldo\n",
" - Aldo\n",
" - Arriola\n",
" - 24\n",
" - Perú\n",
" - Lima\n",
" - Magnetismo\n",
" - Universidad Nacional de Ingeniería\n",
" - Caminatas\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Segunda parte (Organizar los datos)\n",
"\n",
"En el diccionario `compas` se organiza la información de los participantes listados anteriormente."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"compas = {\"hernandezj\":{\"nombre\": \"Juan\", \"apellido\": \"Hernandez\", \"edad\": 24, \"país\": \"Colombia\",\"residencia\":\"Bogotá\",\"especialidad\": \"Electrodinámica cuántica\", \"institución\":\"Universidad Nacional de Colombia\", \"hobbie\": \"Leer\"}, \n",
" \"acerot\":{\"nombre\": \"Tatiana\", \"apellido\": \"Acero\", \"edad\": 23, \"país\": \"Colombia\",\"residencia\":\"Bogotá\",\"especialidad\":\"Mecánica celeste relativista\", \"institución\": \"Universidad Nacional de Colombia\", \"hobbie\":\"Anime\"}, \n",
" \"ladinoj\":{\"nombre\": \"José\", \"apellido\": \"Ladino\", \"edad\": 24, \"país\": \"Colombia\",\"residencia\": \"Bogotá\",\"especialidad\":\"Mecánica celeste relativista\", \"institución\": \"Universidad Nacional de Colombia\", \"hobbie\": \"Skate\"},\n",
" \"navasa\":{\"nombre\": \"Alfonso\", \"apellido\":\"Navas\", \"edad\":24, \"país\":\"Colombia\",\"residencia\":\"Bogotá\",\"especialidad\":\"Física de sistemas complejos\", \"institución\":\"Universidad Nacional de Colombia\", \"hobbie\":\"Crossfit\"},\n",
" \"jalil\":{\"nombre\":\"Jalil\", \"apellido\":\"Valera\", \"edad\":23, \"país\":\"Colombia\",\"residencia\":\"Cali\",\"especialidad\":\"Teoría cuántica de campos\", \"institución\":\"Universidad del Valle\", \"hobbie\":\"Leer\"},\n",
" \"camacho.reina\":{\"nombre\":\"Reina\", \"apellido\":\"Camacho\", \"edad\":33, \"país\":\"Venezuela\",\"residencia\":\"Paris\",\"especialidad\":\"Física experimental de partículas\", \"institución\":\"French National Center for Scientific Research\", \"hobbie\":\"Divulgación científica\"},\n",
" \"ortegaj\":{\"nombre\":\"Jennifer\", \"apellido\":\"Ortega\", \"edad\":24, \"país\":\"Ecuador\",\"residencia\":\"Quito\",\"especialidad\":\"Ciencia computacional\", \"institución\":\"Escuela Politécnica Nacional de Ecuador\", \"hobbie\":\"Hiking\"},\n",
" \"vargass\":{\"nombre\":\"Sasiri\", \"apellido\":\"Vargas\", \"edad\":24, \"país\":\"Colombia\",\"residencia\":\"Cali\",\"especialidad\":\"Simulación\", \"institución\":\"Universidad del Valle\", \"hobbie\":\"Bailar\"},\n",
" \"aldo\":{\"nombre\":\"Aldo\", \"apellido\":\"Arriola\", \"edad\":24, \"país\":\"Perú\",\"residencia\":\"Lima\",\"especialidad\":\"Magnetismo\", \"institución\":\"Universidad Nacional de Ingeniería\", \"hobbie\":\"Caminatas\"}}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tercera parte (Jugar con los datos)\n",
"Como parte final del ejercicio se solicitan tres funciones independientes, las cuales hacen uso del diccionario `compas` o en general de un diccionario con esa estructura. La primera de estas funciones es `peopleByCountry`la cual se expone a continuación.\n"
" 'institución': 'Universidad Industrial de Santander',\n",
" 'hobbie': 'Divulgación Científica'},\n",
" {'nombre': 'Jalil',\n",
" 'apellido': 'Valera',\n",
" 'edad': 23,\n",
" 'país': 'Colombia',\n",
" 'residencia': 'Cali',\n",
" 'especialidad': 'Teoría cuántica de campos',\n",
" 'institución': 'Universidad del Valle',\n",
" 'hobbie': 'Leer'},\n",
" {'nombre': 'Sasiri',\n",
" 'apellido': 'Vargas',\n",
" 'edad': 24,\n",
" 'país': 'Colombia',\n",
" 'residencia': 'Cali',\n",
" 'especialidad': 'Simulación',\n",
" 'institución': 'Universidad del Valle',\n",
" 'hobbie': 'Bailar'}]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"peopleByCountry(compas, \"Colombia\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La siguiente función, `averageAge`, permite calcular la edad promedio de las personas que hacen parte de un diccionarión que contiene una llave llamada edad, la cual almacena un entero. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def averageAge(people:dict)->str:\n",
" \"\"\"\n",
" Esta función calcula la edad promedio de los individuos cuyos datos se encuentran almacenados con llave (su\n",
" nombre) en un diccionario, que a su vez contiene la llave edad, con su respectiva edad.\n",
" \n",
" Input \n",
" ------\n",
" people (dict): diccionario que contiene los datos de las personas en forma de diccionarios.\n",
" \n",
" Output\n",
" ------\n",
" ave (str): cadena que contiene la edad promedio de las personas en el diccionario people.\n",
" \"\"\"\n",
" age = 0\n",
" for person in people:\n",
" age += people[person][\"edad\"]\n",
" \n",
" average = age/len(people)\n",
" ave = \"The average age of your people is \"+str(int(average))+\" years\"\n",
" return ave\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ahora se puede aplicarf la función anterior al caso del diccionario `compas`, tal que "
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'The average age of your people is 25 years'"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"averageAge(compas)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finalmente, la próxima función, `institutions`, permite conocer las instituciones a las cuales pertenecen las personas del diccionrio principal."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"def institutions(people:dict)->list:\n",
" \"\"\"\n",
" Esta función recibe un diccionario que contiene diccionarios, siguiendo la estructura de \"compas\", y retorna \n",
" una lista con las instituciones a las cuales pertenecesn.\n",
" \n",
" Input\n",
" ------\n",
" people (dict): diccionario con la estructura de \"compas\", el cual contiene la información de los individuos \n",
" incluyendo la institución a la que está asociado.\n",
" \n",
" Output\n",
" ------\n",
" universities (list): lista con las instituciones a las cuales pertenecen las personas en people.\n",
"Como se hizo anteriormente, se procese a testear la función `institutions` con el diccionario `compas`."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['Universidad Nacional de Colombia',\n",
" 'Universidad Industrial de Santander',\n",
" 'Universidad del Valle',\n",
" 'French National Center for Scientific Research',\n",
" 'Escuela Politécnica Nacional de Ecuador',\n",
" 'Universidad Nacional de Ingeniería']"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"institutions(compas)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
%% Cell type:markdown id: tags:
# Ejercicio No. 3 - Amigos Congueros
**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.
- 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 es
a la vez otro diccionario, con las llaves “nombre”, “apellido”, “país”, “residencia”, “edad”,
“institución”, “hobbie”.
- 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. -Busque una forma de calcular, a partir del diccionario, el promedio de edad de
todas las personas en él, y una forma de mostrar todas las instituciones (sin repetición)
**Solución:** Hola! Mi nombre es Sebastian Ordoñez (ordonezs). Para tratar este problema opté por apuntar directamente los datos recolectados en un diccionario y trabajar tres funciones independientes de acuerdo a lo solicitado en el enunciado.
%% Cell type:markdown id: tags:
## Primera parte (Encontrar a los amigos congueros)
A continuación se encuentra una lista con los participantes y sus respectivos datos:
1. hernandezj
- Juan
- Hernandez
- 24
- Colombia
- Bogota
- Electrodinámica Cuántica
- Universidad Nacional de Colombia
- Leer
2. acerot
- Tatiana
- Acero
- 23
- Colombia
- Bogota
- Mecánica Celeste Relativista
- Universidad Nacional de Colombia
- Anime
3. ladinoj
- Jose
- Ladino
- 24
- Colombia
- Bogota
- Mecanica Celeste Relativista
- Universidad Nacional de Colombia
- Skate
4. navasa
- Alfonso
- Navas
- 24
- Colombia
- Bogota
- Física de Sistemas Complejos
- Universidad Nacional de Colombia
- Crossfit
5. ramosd
- David
- Ramos
- 23
- Colombia
- Bucaramanga
- Física Estadística
- Universidad Industrial de Santander
- Tocar música rock
6. grisalesj
- Jennifer
- Grisales
- 24
- Colombia
- Cúcuta
- Astropartículas
- Universidad Industrial de Santander
- Divulgación científica
7. juan-pineda
- Juan
- Pineda
- 30
- Colombia
- Bucaramanga
- Astronomía Extragaláctica
- Universidad Industrial de Santander
- Divulgación científica
8. jalil
- Jalil
- Valera
- 23
- Colombia
- Cali
- Teoría cuántica de campos
- Universidad del Valle
- Leer
9. camacho.reina
- Reina
- Camacho
- 33
- Venezuela
- Paris
- Física experimental de partículas
- French National Center for Scientific Research
- Divulgación Científica
10. ortegaj
- Jennifer
- Ortega
- 24
- Ecuador
- Quito
- Ciencia computacional
- Escuela Politécnica Nacional en Ecuador
- Hiking
11. vargass
- Sasiri
- Vargas
- 24
- Colombia
- Cali
- Simulación
- Universidad del Valle
- Bailar
12. aldo
- Aldo
- Arriola
- 24
- Perú
- Lima
- Magnetismo
- Universidad Nacional de Ingeniería
- Caminatas
%% Cell type:markdown id: tags:
## Segunda parte (Organizar los datos)
En el diccionario `compas` se organiza la información de los participantes listados anteriormente.
%% Cell type:code id: tags:
``` python
compas={"hernandezj":{"nombre":"Juan","apellido":"Hernandez","edad":24,"país":"Colombia","residencia":"Bogotá","especialidad":"Electrodinámica cuántica","institución":"Universidad Nacional de Colombia","hobbie":"Leer"},
"acerot":{"nombre":"Tatiana","apellido":"Acero","edad":23,"país":"Colombia","residencia":"Bogotá","especialidad":"Mecánica celeste relativista","institución":"Universidad Nacional de Colombia","hobbie":"Anime"},
"ladinoj":{"nombre":"José","apellido":"Ladino","edad":24,"país":"Colombia","residencia":"Bogotá","especialidad":"Mecánica celeste relativista","institución":"Universidad Nacional de Colombia","hobbie":"Skate"},
"navasa":{"nombre":"Alfonso","apellido":"Navas","edad":24,"país":"Colombia","residencia":"Bogotá","especialidad":"Física de sistemas complejos","institución":"Universidad Nacional de Colombia","hobbie":"Crossfit"},
"ramosd":{"nombre":"David","apellido":"Ramos","edad":23,"país":"Colombia","residencia":"Bucaramanga","especialidad":"Física estadística","institución":"Universidad Industrial de Santander","hobbie":"Tocar rock"},
"grisalesj":{"nombre":"Jennifer","apellido":"Grisales","edad":24,"país":"Colombia","residencia":"Cúcuta","especialidad":"Astropartículas","institución":"Universidad Industrial de Santander","hobbie":"Divulgación científica"},
"juan-pineda":{"nombre":"Juan","apellido":"Pineda","edad":30,"país":"Colombia","residencia":"Bucaramanga","especialidad":"Astronomía extragaláctica","institución":"Universidad Industrial de Santander","hobbie":"Divulgación Científica"},
"jalil":{"nombre":"Jalil","apellido":"Valera","edad":23,"país":"Colombia","residencia":"Cali","especialidad":"Teoría cuántica de campos","institución":"Universidad del Valle","hobbie":"Leer"},
"camacho.reina":{"nombre":"Reina","apellido":"Camacho","edad":33,"país":"Venezuela","residencia":"Paris","especialidad":"Física experimental de partículas","institución":"French National Center for Scientific Research","hobbie":"Divulgación científica"},
"ortegaj":{"nombre":"Jennifer","apellido":"Ortega","edad":24,"país":"Ecuador","residencia":"Quito","especialidad":"Ciencia computacional","institución":"Escuela Politécnica Nacional de Ecuador","hobbie":"Hiking"},
"vargass":{"nombre":"Sasiri","apellido":"Vargas","edad":24,"país":"Colombia","residencia":"Cali","especialidad":"Simulación","institución":"Universidad del Valle","hobbie":"Bailar"},
"aldo":{"nombre":"Aldo","apellido":"Arriola","edad":24,"país":"Perú","residencia":"Lima","especialidad":"Magnetismo","institución":"Universidad Nacional de Ingeniería","hobbie":"Caminatas"}}
```
%% Cell type:markdown id: tags:
## Tercera parte (Jugar con los datos)
Como parte final del ejercicio se solicitan tres funciones independientes, las cuales hacen uso del diccionario `compas` o en general de un diccionario con esa estructura. La primera de estas funciones es `peopleByCountry`la cual se expone a continuación.
Esta función recibe un diccionario con diccionarios, arquitectura de "compas", y una cadena con e nombre de un
país; retornando todas las personas en el diccionario originarias de dicho país.
Input
------
people (dict): diccionario que contiene diccionarios con la estructura de "compas".
country (str): cadena correspondiente al nombre de un país.
Output
------
sameCountry (list): lista que contiene diccionarios con los datos de las personas que vienen del mismo país.
"""
sameCountry=[]
forpersoninpeople:
ifpeople[person]["país"]==country:
sameCountry.append(people[person])
returnsameCountry
```
%% Cell type:markdown id: tags:
Aunque se puede mejorar el output para que sea más legible, por el momento la función anterior funciona para compas tal que:
%% Cell type:code id: tags:
``` python
peopleByCountry(compas,"Colombia")
```
%% Output
[{'nombre': 'Juan',
'apellido': 'Hernandez',
'edad': 24,
'país': 'Colombia',
'residencia': 'Bogotá',
'especialidad': 'Electrodinámica cuántica',
'institución': 'Universidad Nacional de Colombia',
'hobbie': 'Leer'},
{'nombre': 'Tatiana',
'apellido': 'Acero',
'edad': 23,
'país': 'Colombia',
'residencia': 'Bogotá',
'especialidad': 'Mecánica celeste relativista',
'institución': 'Universidad Nacional de Colombia',
'hobbie': 'Anime'},
{'nombre': 'José',
'apellido': 'Ladino',
'edad': 24,
'país': 'Colombia',
'residencia': 'Bogotá',
'especialidad': 'Mecánica celeste relativista',
'institución': 'Universidad Nacional de Colombia',
'hobbie': 'Skate'},
{'nombre': 'Alfonso',
'apellido': 'Navas',
'edad': 24,
'país': 'Colombia',
'residencia': 'Bogotá',
'especialidad': 'Física de sistemas complejos',
'institución': 'Universidad Nacional de Colombia',
'hobbie': 'Crossfit'},
{'nombre': 'David',
'apellido': 'Ramos',
'edad': 23,
'país': 'Colombia',
'residencia': 'Bucaramanga',
'especialidad': 'Física estadística',
'institución': 'Universidad Industrial de Santander',
'hobbie': 'Tocar rock'},
{'nombre': 'Jennifer',
'apellido': 'Grisales',
'edad': 24,
'país': 'Colombia',
'residencia': 'Cúcuta',
'especialidad': 'Astropartículas',
'institución': 'Universidad Industrial de Santander',
'hobbie': 'Divulgación científica'},
{'nombre': 'Juan',
'apellido': 'Pineda',
'edad': 30,
'país': 'Colombia',
'residencia': 'Bucaramanga',
'especialidad': 'Astronomía extragaláctica',
'institución': 'Universidad Industrial de Santander',
'hobbie': 'Divulgación Científica'},
{'nombre': 'Jalil',
'apellido': 'Valera',
'edad': 23,
'país': 'Colombia',
'residencia': 'Cali',
'especialidad': 'Teoría cuántica de campos',
'institución': 'Universidad del Valle',
'hobbie': 'Leer'},
{'nombre': 'Sasiri',
'apellido': 'Vargas',
'edad': 24,
'país': 'Colombia',
'residencia': 'Cali',
'especialidad': 'Simulación',
'institución': 'Universidad del Valle',
'hobbie': 'Bailar'}]
%% Cell type:markdown id: tags:
La siguiente función, `averageAge`, permite calcular la edad promedio de las personas que hacen parte de un diccionarión que contiene una llave llamada edad, la cual almacena un entero.
%% Cell type:code id: tags:
``` python
defaverageAge(people:dict)->str:
"""
Esta función calcula la edad promedio de los individuos cuyos datos se encuentran almacenados con llave (su
nombre) en un diccionario, que a su vez contiene la llave edad, con su respectiva edad.
Input
------
people (dict): diccionario que contiene los datos de las personas en forma de diccionarios.
Output
------
ave (str): cadena que contiene la edad promedio de las personas en el diccionario people.
"""
age=0
forpersoninpeople:
age+=people[person]["edad"]
average=age/len(people)
ave="The average age of your people is "+str(int(average))+" years"
returnave
```
%% Cell type:markdown id: tags:
Ahora se puede aplicarf la función anterior al caso del diccionario `compas`, tal que
%% Cell type:code id: tags:
``` python
averageAge(compas)
```
%% Output
'The average age of your people is 25 years'
%% Cell type:markdown id: tags:
Finalmente, la próxima función, `institutions`, permite conocer las instituciones a las cuales pertenecen las personas del diccionrio principal.
%% Cell type:code id: tags:
``` python
definstitutions(people:dict)->list:
"""
Esta función recibe un diccionario que contiene diccionarios, siguiendo la estructura de "compas", y retorna
una lista con las instituciones a las cuales pertenecesn.
Input
------
people (dict): diccionario con la estructura de "compas", el cual contiene la información de los individuos
incluyendo la institución a la que está asociado.
Output
------
universities (list): lista con las instituciones a las cuales pertenecen las personas en people.