diff --git a/ejercicio3.ipynb b/ejercicio3.ipynb
index 08333e486076da13c63e96284a2421e807129b71..1f8f94c97a1881fb78188250bacfb05f896fd9ae 100644
--- a/ejercicio3.ipynb
+++ b/ejercicio3.ipynb
@@ -32,9 +32,19 @@
     "Busque una forma de mostrar todas las instituciones (sin repetición)"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "---\n",
+    "En la siguiente celda creamos el diccionario `compas` con la informacion que recolectamos.\n",
+    "\n",
+    "Debe haber una forma de poder cargar esta informacion desde un archivo `.txt`, pero aun no la reviso."
+   ]
+  },
   {
    "cell_type": "code",
-   "execution_count": 17,
+   "execution_count": 88,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -72,12 +82,12 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### Algunos ejemplos de como de imprime la informacion de las personas"
+    "### Algunos ejemplos de como se imprime la informacion de las personas"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": 89,
    "metadata": {},
    "outputs": [
     {
@@ -93,7 +103,7 @@
        " 'hobbie': 'gimnasio'}"
       ]
      },
-     "execution_count": 18,
+     "execution_count": 89,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -104,7 +114,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": 90,
    "metadata": {},
    "outputs": [
     {
@@ -120,7 +130,7 @@
        " 'hobbie': 'correr, natacion, leer'}"
       ]
      },
-     "execution_count": 19,
+     "execution_count": 90,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -134,12 +144,28 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "# Falta explicacion"
+    "---\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",
+    "\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",
+    "(_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",
+    "\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": 20,
+   "execution_count": 91,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -151,7 +177,7 @@
     "    se imprime, aparezca ademas de todo, el usuario de Mattermost\n",
     "    \n",
     "    \n",
-    "    Retorna la informacion de las personas originarias del pais y\n",
+    "    Retorna la informacion de las personas originarias del pais ingresado en la variable y.\n",
     "    \"\"\"\n",
     "    # Hago una copia del diccionario compas\n",
     "    copia_compas=x.copy()\n",
@@ -162,18 +188,19 @@
     "    # Esta parte añade la key=\"usuario mattermost\"\n",
     "    # a los diccionarios que contienen la informacion \n",
     "    # de los compas.\n",
-    "    if z:\n",
-    "        for r in keys_and_values:\n",
-    "            copia_compas[r[0]][\"usuario mattermost\"]=r[0]\n",
+    "    if z:  \n",
+    "        for a,b in keys_and_values:\n",
+    "            b[\"usuario mattermost\"]=a\n",
+    "    \n",
     "    \n",
     "    # Miro en cada \"subdiccionario\" el pais de origen,\n",
     "    # si este coincide con el pais que se pidio, se imprime el subdiccionario \n",
     "    # de manera bonita.\n",
     "    \n",
-    "    for h in keys_and_values:\n",
-    "        if y==h[1][\"pais\"]:\n",
+    "    for _,balores in keys_and_values:\n",
+    "        if y==balores[\"pais\"]:\n",
     "            print(\"----------------------------------------------------\")\n",
-    "            for llave,valor in h[1].items():\n",
+    "            for llave,valor in balores.items():\n",
     "                print(llave,\":\",valor)\n",
     "    \n",
     "    return \"\""
@@ -190,7 +217,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": 92,
    "metadata": {},
    "outputs": [
     {
@@ -256,7 +283,7 @@
     }
    ],
    "source": [
-    "print(info_por_paises(compas,\"Venezuela\"))        "
+    "print(info_por_paises(compas,\"Venezuela\"))  "
    ]
   },
   {
@@ -269,7 +296,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": 93,
    "metadata": {},
    "outputs": [
     {
@@ -306,7 +333,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 32,
+   "execution_count": 94,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -325,7 +352,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 33,
+   "execution_count": 95,
    "metadata": {},
    "outputs": [
     {
@@ -342,7 +369,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 46,
+   "execution_count": 96,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -367,7 +394,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 47,
+   "execution_count": 97,
    "metadata": {},
    "outputs": [
     {
@@ -401,6 +428,47 @@
     "\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"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "''"
+      ]
+     },
+     "execution_count": 98,
+     "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)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
   }
  ],
  "metadata": {