From 401af217c3815d279733afb6a024b3c8d75929fa Mon Sep 17 00:00:00 2001
From: Gerardo Semprum <semprumg@jupyterMiLAB>
Date: Mon, 8 Feb 2021 06:52:31 -0500
Subject: [PATCH] Notebook ejercicio 3

---
 ejercicio3_SemprumG.ipynb | 440 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 440 insertions(+)
 create mode 100644 ejercicio3_SemprumG.ipynb

diff --git a/ejercicio3_SemprumG.ipynb b/ejercicio3_SemprumG.ipynb
new file mode 100644
index 0000000..3b58f28
--- /dev/null
+++ b/ejercicio3_SemprumG.ipynb
@@ -0,0 +1,440 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "### Ejercicio 3. Amigos congueros.\n",
+    "#### Gerardo Semprúm.\n",
+    "#### Usuario de Mattermost: @semprumg\n",
+    "#### Universidad Central de Venezuela."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Entre en contacto con 10 estudiantes del curso de datos y 2 profesores de LaConga, uno del curso de datos y otro de afuera, y consulte su nombre completo, su nombre de usuario de mattermost, edad, pais de origen, ciudad donde residen, su especialidad cientifica, nombre del instituto(estudia/enseña)\n",
+    "y un hobbie.\n",
+    "\n",
+    "**Cree un diccionario llamado compas, donde la llave sea el nombre de usuario en mattermost y si despliego el valor almacenado, Ex: compas[\"juan pineda\"], lo que obtengo es a la vez otro diccionario con las llaves \"nombre\", \"apellido\", \"país\", \"residencia\", \"edad\", \"institucion\", \"Hobbie\"**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Debemos crear un diccionario anidado (nested dictionary), el cual es un diccionario, en donde sus elementos llave (key) estan emparejados con elementos valor (value) que son a su vez otro diccionario.\n",
+    "\n",
+    "**Consejo importante:**\n",
+    "\n",
+    "\n",
+    "    Para abrir un diccionario se usan {}.\n",
+    "    Cada par k:v (llave,valor) debe estar separado por una coma del siguiente par k:v."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "{'Persona 1': {'nombre': 'Pedro', 'Edad': 27}, 'Persona 2': {'nombre': 'Ana', 'Edad': 25}}\n"
+     ]
+    }
+   ],
+   "source": [
+    "#Ejemplo: Creando un nested dictionary.\n",
+    "ex = {\n",
+    "    \"Persona 1\":{\n",
+    "    \"nombre\":\"Pedro\",\n",
+    "    \"Edad\":27,\n",
+    "    },\n",
+    "\n",
+    "    \"Persona 2\":{\n",
+    "    \"nombre\":\"Ana\",\n",
+    "    \"Edad\":25,\n",
+    "    },\n",
+    "}\n",
+    "print(ex)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "De manera más compleja y extensa, creamos un diccionario en donde almacenamos a nuestros 10 compañeros y 2 profesores de La-Conga:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 21,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#Definimos nuestro diccionario como compas, en donde la llave es el usuario de mattermost de cada\n",
+    "#persona y el valor de dicha llave es el segundo diccionario que contiene la información general\n",
+    "\n",
+    "compas = {\n",
+    "    \"semprumg\" : {\n",
+    "    \"nombre\": \"Gerardo\",\n",
+    "    \"apellido\": \"Semprúm\",\n",
+    "    \"pais\": \"Venezuela\",\n",
+    "    \"residencia\": \"Caracas\",\n",
+    "    \"edad\": 24,\n",
+    "    \"institución\": \"Universidad Central de Venezuela\",\n",
+    "    \"hobbie\": \"VideoJuegos\",\n",
+    "    },\n",
+    "    \n",
+    "    \"martinezj\" : {\n",
+    "    \"nombre\":\"Jocabed\",\n",
+    "    \"apellido\" : \"Martinez\",\n",
+    "    \"pais\":\"Venezuela\",\n",
+    "    \"residencia\":\"Caracas\",\n",
+    "    \"edad\":22,\n",
+    "    \"institución\":\"Universidad Central de Venezuela\",\n",
+    "    \"hobbie\":\"Musica\",\n",
+    "    },\n",
+    "    \n",
+    "    \"juan-pineda\" : {\n",
+    "    \"nombre\": \"Juan C.\",\n",
+    "    \"apellido\":\" B. Pineda\",\n",
+    "    \"pais\":\"Colombia\",\n",
+    "    \"residencia\":\"Bucaramanga\",\n",
+    "    \"edad\":37,\n",
+    "    \"institución\":\"Universidad Industrial de Santander\",\n",
+    "    \"hobbie\":\"Caminatas en la naturaleza\",\n",
+    "    },\n",
+    "    \n",
+    "    \"jal\" : {\n",
+    "    \"nombre\": \"José A.\",\n",
+    "    \"apellido\":\"Lopez\",\n",
+    "    \"pais\":\"Venezuela\",\n",
+    "    \"residencia\":\"Caracas\",\n",
+    "    \"edad\":50,\n",
+    "    \"institución\":\"Universidad Central de Venezuela\",\n",
+    "    \"hobbie\":\"Excursionismo\",   \n",
+    "    },\n",
+    "    \n",
+    "    \"tugoresa\" : {\n",
+    "    \"nombre\": \"Andrea\",\n",
+    "    \"apellido\":\"Tugores\",\n",
+    "    \"pais\":\"Venezuela\",\n",
+    "    \"residencia\":\"Caracas\",\n",
+    "    \"edad\":24,\n",
+    "    \"institución\":\"Universidad Central de Venezuela\",\n",
+    "    \"hobbie\":\"Tennis\",\n",
+    "    },\n",
+    "    \n",
+    "    \"malamboj\": {\n",
+    "    \"nombre\": \"Jorge\",\n",
+    "    \"apellido\":\"Malambo\",\n",
+    "    \"pais\":\"Colombia\",\n",
+    "    \"residencia\":\"Bogota\",\n",
+    "    \"edad\":39,\n",
+    "    \"institución\":\" Universidad Nacional de Colombia\",\n",
+    "    \"hobbie\":\"Talla en madera\",\n",
+    "    },\n",
+    "    \n",
+    "    \"fernandezn\" :{\n",
+    "    \"nombre\": \"Nicolás\",\n",
+    "    \"apellido\":\"Fernandez\",\n",
+    "    \"pais\":\"Argentina\",\n",
+    "    \"residencia\":\"Perú\",\n",
+    "    \"edad\":27,\n",
+    "    \"institución\":\"Universidad Nacional Mayor de San Marcos\",\n",
+    "    \"hobbie\":\"piano\",\n",
+    "    },\n",
+    "\n",
+    "    \"jalil\": {\n",
+    "    \"nombre\": \"Jalil\",\n",
+    "    \"apellido\":\"Varela\",\n",
+    "    \"pais\":\"Colombia\",\n",
+    "    \"residencia\":\"Colombia\",\n",
+    "    \"edad\":26,\n",
+    "    \"institución\":\"Universidad del Valle\",\n",
+    "    \"hobbie\":\"trotar\",\n",
+    "    },\n",
+    "    \n",
+    "    \"grisalesj\": {\n",
+    "    \"nombre\": \"Jennifer\",\n",
+    "    \"apellido\":\"Grisales\",\n",
+    "    \"pais\":\"Colombia\",\n",
+    "    \"residencia\":\"Bucaramanga\",\n",
+    "    \"edad\":27,\n",
+    "    \"institución\":\"Universidad Industrial de Santander\",\n",
+    "    \"hobbie\":\"rugby\",\n",
+    "    },\n",
+    "    \n",
+    "    \"bermudezj\": {\n",
+    "    \"nombre\": \"Jesus D.\",\n",
+    "    \"apellido\":\"Bermudez S.\",\n",
+    "    \"pais\":\"Colombia\",\n",
+    "    \"residencia\":\"Bogota\",\n",
+    "    \"edad\":25,\n",
+    "    \"institución\":\"Universidad Nacional de Colombia\",\n",
+    "    \"hobbie\":\"Senderismo\",\n",
+    "    },\n",
+    "    \n",
+    "    \"cristian.velandia\": {\n",
+    "    \"nombre\": \"Cristian\",\n",
+    "    \"apellido\":\"Velandia\",\n",
+    "    \"pais\":\"Colombia\",\n",
+    "    \"residencia\":\"Colombia\",\n",
+    "    \"edad\":27,\n",
+    "    \"institución\":\"Universidad Nacional de Colombia\",\n",
+    "    \"hobbie\":\"Videojuegos\",\n",
+    "    },\n",
+    "    \n",
+    "    \"acerot\":{\n",
+    "    \"nombre\": \"Tatiana\",\n",
+    "    \"apellido\":\"Acero C.\",\n",
+    "    \"pais\":\"Colombia\",\n",
+    "    \"residencia\":\"Colombia\",\n",
+    "    \"edad\": 23,\n",
+    "    \"institución\":\"Universidad Nacional de Colombia\",\n",
+    "    \"hobbie\":\"Anime\",\n",
+    "    },\n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Si queremos saber los datos de una persona contenida en esta lista solo es necesario llamar a los valores asociados a su llave (mattermost)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 22,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'nombre': 'Jennifer',\n",
+       " 'apellido': 'Grisales',\n",
+       " 'pais': 'Colombia',\n",
+       " 'residencia': 'Bucaramanga',\n",
+       " 'edad': 27,\n",
+       " 'institución': 'Universidad Industrial de Santander',\n",
+       " 'hobbie': 'rugby'}"
+      ]
+     },
+     "execution_count": 22,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "#Pidiendo la información de un solo usuario:\n",
+    "compas[\"grisalesj\"]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**Crear una funcion 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 facil de entender.**"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Para crear una función pedimos a python que la defina y de que variable va a dependender, como se muestra en el ejemplo:"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 23,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def Example(x):\n",
+    "    mult= 5*x\n",
+    "    return mult"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 24,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "25"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "Example(5)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Definimos nuestra función que dependerá de un diccionario de nuestra elección y un elemento string str(), la función imprime un mensaje de orientación. \n",
+    "Seguidamente entramos en el primer ciclo for, que por cada \"matter\" que serian las llaves de cada pesona contenidas en el diccionario.\n",
+    "\n",
+    "Entramos en un condicional (if) de donde si el elemento contenido en dict[matter][\"pais\"] coincide con la string que ingresemos (que debe ser un país). La función continuará a imprimir el Mattermost de cada persona en ese país seguido de su información en forma de tabla."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 25,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#Definiendo la funcion\n",
+    "def Compais(dict,str):\n",
+    "    print(\"Los compas de\",str, \"que solicitaste son:\") #imprime un mensaje según la string\n",
+    "    print()\n",
+    "    for matter in dict.keys(): #Primer ciclo for, usa las key del diccionario\n",
+    "        if dict[matter][\"pais\"] == str: #Condición de que la str sea igual a uno de los paises\n",
+    "            print(\"Mattermost:\",[matter]) #Imprime el usuario de la persona\n",
+    "            for k in dict[matter]: #Para los elementos k en el diccionario\n",
+    "                print(k,\":\",dict[matter][k]) #imprime el par k,v del diccionario (datos personales)\n",
+    "            print()   #Imprime un espacio en blanco para mejor aspecto "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Según el diccionario creado, la función Compais acepta a los paises: Venezuela, Colombia y Argentina"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 26,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Los compas de Venezuela que solicitaste son:\n",
+      "\n",
+      "Mattermost: ['semprumg']\n",
+      "nombre : Gerardo\n",
+      "apellido : Semprúm\n",
+      "pais : Venezuela\n",
+      "residencia : Caracas\n",
+      "edad : 24\n",
+      "institución : Universidad Central de Venezuela\n",
+      "hobbie : VideoJuegos\n",
+      "\n",
+      "Mattermost: ['martinezj']\n",
+      "nombre : Jocabed\n",
+      "apellido : Martinez\n",
+      "pais : Venezuela\n",
+      "residencia : Caracas\n",
+      "edad : 22\n",
+      "institución : Universidad Central de Venezuela\n",
+      "hobbie : Musica\n",
+      "\n",
+      "Mattermost: ['jal']\n",
+      "nombre : José A.\n",
+      "apellido : Lopez\n",
+      "pais : Venezuela\n",
+      "residencia : Caracas\n",
+      "edad : 50\n",
+      "institución : Universidad Central de Venezuela\n",
+      "hobbie : Excursionismo\n",
+      "\n",
+      "Mattermost: ['tugoresa']\n",
+      "nombre : Andrea\n",
+      "apellido : Tugores\n",
+      "pais : Venezuela\n",
+      "residencia : Caracas\n",
+      "edad : 24\n",
+      "institución : Universidad Central de Venezuela\n",
+      "hobbie : Tennis\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "#Para llamar a nuestra función solo llamamos al diccionario compas y el país que deseamos\n",
+    "Compais(compas,'Venezuela')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "**Busque una forma de calcular, a partir del diccionario, el promedio de la edad de todas las personas en él , y una forma de mostrar todas las instituciones sin repetición.**"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 27,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Las edades de cada uno son: [24, 22, 37, 50, 24, 39, 27, 26, 27, 25, 27, 23]\n",
+      "El promedio de edad será: 29.25\n",
+      "Nuestras instituciones son: [' Universidad Nacional de Colombia', 'Universidad Central de Venezuela', 'Universidad Industrial de Santander', 'Universidad Nacional Mayor de San Marcos', 'Universidad Nacional de Colombia', 'Universidad del Valle']\n"
+     ]
+    }
+   ],
+   "source": [
+    "#Para obtener un promedio de las edades usamos un loop e importamos una libreria de estadistica:\n",
+    "import statistics as stat \n",
+    "\n",
+    "prom_edad=[] #creamos la lista de promedio de edades\n",
+    "Unis=[] # Creamos la lista de Universidades presentes \n",
+    "\n",
+    "for matter in compas.keys(): #Iniciamos un ciclo for por cada elemento llave en el dict \"compas\"\n",
+    "    prom_edad.append(compas[matter][\"edad\"]) #agregamos todas las edades en la lista de promedios\n",
+    "    Unis.append(compas[matter][\"institución\"])#añadimos las universidades a la lista\n",
+    "    Unis = set(Unis) #usamos \"set()\" para borrar elementos repetidos\n",
+    "    Unis = sorted(Unis) #Usamos \"sorted()\" para ordenar las universidades en orden alfabetico\n",
+    "\n",
+    "print(\"Las edades de cada uno son:\",prom_edad) #imprimimos la lista completa de edades\n",
+    "\n",
+    "#En el argumento de print, usamos la función estadistica \".mean()\" que sirve para obtener el promedio\n",
+    "print(\"El promedio de edad será:\",stat.mean(prom_edad)) \n",
+    "\n",
+    "#Imprimimos nuestras instituciones\n",
+    "print(\"Nuestras instituciones son:\",Unis)"
+   ]
+  }
+ ],
+ "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
+}
-- 
GitLab