diff --git a/ejercicio1.ipynb b/ejercicio1.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..012109a4ef92355047247b65ad9fe413c79c8474
--- /dev/null
+++ b/ejercicio1.ipynb
@@ -0,0 +1,177 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "*Mi nombre es Jesus David Bermudez Sanchez, soy estudiante de la Maestria en Fisica de la Universidad Nacional de Colombia, Sede Bogotá*\n",
+    "\n",
+    "---"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# El problema a resolver es el siguiente\n",
+    "\n",
+    "## Lista de palabras\n",
+    "\n",
+    "Escriba un programa en python que acepte una lista de palabras separadas por guiones, e imprima de vuelta las\n",
+    "mismas palabras, sin repetición y nuevamente separadas por guiones, después de ordenarlas alfabéticamente.\n",
+    "\n",
+    "Ejemplo de entrada: naranja-avión-melodía-tupla-avión\n",
+    "\n",
+    "Salida esperada: avión-melodía-naranja-tupla\n",
+    "\n",
+    "---"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Iniciamos pidiendo al usuario una lista de palabras conectadas con guiones. (Esperamos que el usuario **NO** introduzca espacios en blanco). \n",
+    "\n",
+    "Para ello usamos el comando `input()`, el cual permite pedir al usuario información a traves de la pantalla; esta informacion se guarda en una variable de tipo \"string\".\n",
+    "\n",
+    "En nuestro caso llamamos a esta variable `palabras`. A esta variable le agregamos un guion en el extremo derecho. El porque de esta accion se expondra mas adelante."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdin",
+     "output_type": "stream",
+     "text": [
+      "Ingrese una lista de palabras separadas por guiones sin dejar epacios;                se retornaran las palabras ordenadas alfabeticamente y sin repeticiones hola-como-estas\n"
+     ]
+    }
+   ],
+   "source": [
+    "palabras=input(\n",
+    "    \"Ingrese una lista de palabras separadas por guiones sin dejar epacios; \\\n",
+    "               se retornaran las palabras ordenadas alfabeticamente y sin repeticiones\")\n",
+    "\n",
+    "# Le agrego un guion al final del string original(para que funcione el \n",
+    "# proceso que me invente)\n",
+    "palabras=palabras+\"-\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Creo la lista vacia que va a contener las palabras individuales\n",
+    "lista_de_palabras=[]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Separacion de las palabras\n",
+    "\n",
+    "En la celda siguiente se ejecuta el proceso que permite extraer cada una de las palabras que el usuario ingresó, las cuales estan guardadas como en **UN** solo string, que llamamos `palabras`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "#--------------------------------------------------------------\n",
+    "# Aqui ensaye como quitarle el ultimo caracter a un string\n",
+    "#prueba=\"cacaroto\"\n",
+    "#print(prueba[:-1])\n",
+    "#---------------------------------------------------------------\n",
+    "\n",
+    "\n",
+    "contador=\"\"\n",
+    "for x in palabras:\n",
+    "    contador=contador+x\n",
+    "    if x==\"-\":\n",
+    "        lista_de_palabras.append(contador[:-1]) \n",
+    "        #Sin el [:-1] se añade la palabra con el guion delante\n",
+    "        contador=\"\"\n",
+    "\n",
+    "\n",
+    "# lista_de_palabras es una lista que contiene las palabras del string original.\n",
+    "print(\"Lista que contiene las palabras ingresadas sin guiones: \",lista_de_palabras)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "set_palabras_sin_repetir=set(lista_de_palabras)\n",
+    "print(\"set de palabras ingresadas sin repetir \",set_palabras_sin_repetir)\n",
+    "\n",
+    "list_palabras_sin_repetir=list(set_palabras_sin_repetir)\n",
+    "print(\"lista de palabras ingresadas sin repetir \",list_palabras_sin_repetir)\n",
+    "\n",
+    "# Ordenamos las palabras alfabeticamente\n",
+    "list_palabras_sin_repetir.sort()\n",
+    "print(\"lista de palabras ingresadas sin repetir, ordenadas alfabeticamente \",list_palabras_sin_repetir)\n",
+    "# Hacemos el string final uniendo los elementos de list_palabras_sin_repetir\n",
+    "semi_final_string=\"\"\n",
+    "for a in list_palabras_sin_repetir:\n",
+    "    semi_final_string=semi_final_string+\"-\"+a\n",
+    "\n",
+    "# Me toca hacerlo asi porque el semi_final_string tiene un \"-\" en la posicion 0.\n",
+    "final_string=semi_final_string[1:]\n",
+    "print(\" \")\n",
+    "print(\" \")\n",
+    "print(\"A continuación se muestra un string de las palabras ingresadas,\")\n",
+    "print(\"sin repeticion, y ordenadas alfabeticamente, separadas por guiones\")\n",
+    "# Me toca imprimirlo usando [1:] porque el final_string tiene un \"-\" en la posicion 0.\n",
+    "print(final_string)\n",
+    "\n",
+    "# naranja-avión-melodía-tupla-avión"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Bibliografia: https://www.geeksforgeeks.org/python-convert-set-into-a-list/"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "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
+}
diff --git a/ejercicio2.ipynb b/ejercicio2.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..e5cedb5d1c9496f2cc29cc7cd503e5361df25c9d
--- /dev/null
+++ b/ejercicio2.ipynb
@@ -0,0 +1,88 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Triángulo de Pascal\n",
+    "\n",
+    "Escriba una rutina en python que reciba como entrada un número entero, n, e imprima los números en la n-ésima fila\n",
+    "del triángulo de Pascal. El programa debe verificar si el número n es entero, o arrojar un mensaje informando que ha habido un error del usuario en caso contrario."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "ename": "SyntaxError",
+     "evalue": "invalid syntax (<ipython-input-2-5ac345945ba7>, line 10)",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;36m  File \u001b[0;32m\"<ipython-input-2-5ac345945ba7>\"\u001b[0;36m, line \u001b[0;32m10\u001b[0m\n\u001b[0;31m    lista=\u001b[0m\n\u001b[0m          ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
+     ]
+    }
+   ],
+   "source": [
+    "def funcion(n):\n",
+    "    lista=[]\n",
+    "    if n==1:\n",
+    "        return [1]\n",
+    "    elif n==2:\n",
+    "        return [1,1] \n",
+    "    else:\n",
+    "        \n",
+    "        for i in range(n-2):\n",
+    "            lista=\n",
+    "        \n",
+    "\n",
+    "def triangulo_pascal(n):\n",
+    "    if type(n)is not int:\n",
+    "        print(\"El numero ingresado no es un numero entero\")\n",
+    "    else:\n",
+    "       \n",
+    "        \n",
+    "    \n",
+    "triangulo_pascal(3.)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Triangulo de Pascal modificado\n",
+    "\n",
+    "Modifique la rutina anterior para que reciba un número variable de argumentos: n1, n2, n3,... y retorne una lista cuyo primer elemento es una lista conteniendo los números en la fila n1 del triángulo de Pascal, el segundo elemento una lista con los números en la fila n2, y así sucesivamente."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "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
+}
diff --git a/ejercicio3.ipynb b/ejercicio3.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..9027a715028d23125023f3a8ef48dde363e57426
--- /dev/null
+++ b/ejercicio3.ipynb
@@ -0,0 +1,264 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Amigos congueros\n",
+    " Entre en contacto con 10 estudiantes del curso de datos y 2 profesores o personal de soporte de LaConga, uno del\n",
+    " curso de datos y otro de afuera, y consulte su nombre completo, su nombre de usuario en mattermost, edad, pais de\n",
+    " origen, ciudad donde residen, su especialidad científica, nombre del instituto en que estudian/laboran, y un hobbie o\n",
+    " afición.\n",
+    "\n",
+    " Cree un diccionario llamado \"compas\", donde la llave sea el nombre de usuario en mattermost, y si depliego el valor\n",
+    " almacenado, por ejemplo en compas['juan-pineda\"], lo que obtengo es a la vez otro diccionario, con las llaves\n",
+    "\n",
+    " \"nombre\", \"apellido\", \"país\", \"residencia\", \"edad\", \"institución\", \"hobbie\".\n",
+    "\n",
+    " Cree una función que reciba como entrada el diccionario y un país de origen, y retorne las informaciones completas de \n",
+    " todas las personas de ese país, tabuladas en una forma fácil de entender"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "compas={\n",
+    "\"juan-pineda\":{\"nombres\":\"Juan Carlos\",\"apellidos\":\"Basto Pineda\",\"pais\":\"Colombia\",\"residencia\":\"Santander\",\"edad\":\"30\",\"institucion\":\"Universidad Industrial de Santander\",\"hobbie\":\"divulgacion cientifica\"},\n",
+    "\"camacho.reina\":{\"nombres\":\"Reina\",\"apellidos\":\"Camacho Toro\",\"pais\":\"Venezuela\",\"residencia\":\"Francia\",\"edad\":\"36\",\"institucion\":\"CNRS\",\"hobbie\":\"avistamiento de aves\"},\n",
+    "\"jalil\":{\"nombres\":\"Jalil\",\"apellidos\":\"Varela Manjarres\",\"pais\":\"Colombia\",\"residencia\":\"Valle del Cauca\",\"edad\":\"25\",\"institucion\":\"Universidad del Valle\",\"hobbie\":\"viajar\"},\n",
+    "\"grisalesj\":{\"nombres\":\"Jennifer\",\"apellidos\":\"Grisales\",\"pais\":\"Colombia\",\"residencia\":\"Cucuta\",\"edad\":\"27\",\"institucion\":\"Universidad Industrial de Santander\",\"hobbie\":\"caminata y deporte\"},\n",
+    "\"ramosd\":{\"nombres\":\"David\",\"apellidos\":\"Ramos\",\"pais\":\"Colombia\",\"residencia\":\"Santander\",\"edad\":\"26\",\"institucion\":\"Universidad Industrial de Santander\",\"hobbie\":\"escuchar y tocar musica\"},\n",
+    "\"vargass\":{\"nombres\":\"Sasiri\",\"apellidos\":\"Vargas\",\"pais\":\"Colombia\",\"residencia\":\"Valle del Cauca\",\"edad\":\"24\",\"institucion\":\"Universidad del Valle\",\"hobbie\":\"baile\"},\n",
+    "\"navasa\":{\"nombres\":\"Alfonso\",\"apellidos\":\"Navas\",\"pais\":\"Colombia\",\"residencia\":\"Bogota\",\"edad\":\"27\",\"institucion\":\"Universidad Nacional de Colombia\",\"hobbie\":\"ciclismo recreacional\"},\n",
+    "\"aldo\":{\"nombres\":\"Aldo\",\"apellidos\":\"Arriola\",\"pais\":\"Peru\",\"residencia\":\"Lima\",\"edad\":\"26\",\"institucion\":\"Universidad Nacional de Ingenieria\",\"hobbie\":\"caminatas\"},\n",
+    "\"omarasto\":{\"nombres\":\"Omar\",\"apellidos\":\"Asto\",\"pais\":\"Peru\",\"residencia\":\"Lima\",\"edad\":\"27\",\"institucion\":\"Universidad Nacional de Ingenieria\",\"hobbie\":\"lectura de novelas y poesia\"}    \n",
+    "}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 37,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "----------------------------------------------------\n",
+      "nombres : Reina\n",
+      "apellidos : Camacho Toro\n",
+      "pais : Venezuela\n",
+      "residencia : Francia\n",
+      "edad : 36\n",
+      "institucion : CNRS\n",
+      "hobbie : avistamiento de aves\n",
+      "usuario mattermost : camacho.reina\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "def info_por_paises(x,y):\n",
+    "    \n",
+    "    # Hago una copia del diccionario compas\n",
+    "    copia_compas=x.copy()\n",
+    "    \n",
+    "    # Saco la lista de (key,values)\n",
+    "    keys_and_values=copia_compas.items()\n",
+    "    \n",
+    "    # Esta parte añade la key=\"usuario mattermost\"\n",
+    "    # a los diccionarios que contienen la informacion \n",
+    "    # de los compas.\n",
+    "    for r in keys_and_values:\n",
+    "        copia_compas[r[0]][\"usuario mattermost\"]=r[0]\n",
+    "    \n",
+    "    lista_paises=[]\n",
+    "    \n",
+    "    # Hago una lista de los paises de origen de los compas\n",
+    "    # Esta lista puede contener elementos repetidos\n",
+    "    for f in keys_and_values:\n",
+    "        lista_paises.append(copia_compas[f[0]][\"pais\"])\n",
+    "        \n",
+    "    set_paises=set(lista_paises)\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",
+    "    # La inspiracion para imprimir bonito la saque de\n",
+    "    # https://thispointer.com/python-4-ways-to-print-items-of-a-dictionary-line-by-line/\n",
+    "    for h in keys_and_values:\n",
+    "        if y==h[1][\"pais\"]:\n",
+    "            print(\"----------------------------------------------------\")\n",
+    "            for llave,valor in h[1].items():\n",
+    "                print(llave,\":\",valor)\n",
+    "    \n",
+    "    return \"\"\n",
+    "    \n",
+    "    \n",
+    "print(info_por_paises(compas,\"Venezuela\"))        "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'nombres': 'Juan Carlos',\n",
+       " 'apellidos': 'Basto Pineda',\n",
+       " 'pais': 'Colombia',\n",
+       " 'residencia': 'Santander',\n",
+       " 'edad': '30',\n",
+       " 'institucion': 'Universidad Industrial de Santander',\n",
+       " 'hobbie': 'divulgacion cientifica'}"
+      ]
+     },
+     "execution_count": 17,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "compas[\"juan-pineda\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'nombres': 'Reina',\n",
+       " 'apellidos': 'Camacho Toro',\n",
+       " 'pais': 'Venezuela',\n",
+       " 'residencia': 'Francia',\n",
+       " 'edad': '36',\n",
+       " 'institucion': 'CNRS',\n",
+       " 'hobbie': 'avistamiento de aves'}"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "compas[\"camacho.reina\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'nombres': 'Jalil',\n",
+       " 'apellidos': 'Varela Manjarres',\n",
+       " 'pais': 'Colombia',\n",
+       " 'residencia': 'Valle',\n",
+       " 'edad': '25',\n",
+       " 'institucion': 'Universidad del Valle',\n",
+       " 'hobbie': 'viajar'}"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "compas[\"jalil\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'nombres': 'Jennifer',\n",
+       " 'apellidos': 'Grisales',\n",
+       " 'pais': 'Colombia',\n",
+       " 'residencia': 'Cucuta',\n",
+       " 'edad': '27',\n",
+       " 'institucion': 'Universidad Industrial de Santander',\n",
+       " 'hobbie': 'caminata y deporte'}"
+      ]
+     },
+     "execution_count": 10,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "compas[\"grisalesj\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'nombres': 'David',\n",
+       " 'apellidos': 'Ramos',\n",
+       " 'pais': 'Colombia',\n",
+       " 'residencia': 'Santander',\n",
+       " 'edad': '26',\n",
+       " 'institucion': 'Universidad Industrial de Santander',\n",
+       " 'hobbie': 'escuchar y tocar musica'}"
+      ]
+     },
+     "execution_count": 11,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "compas[\"ramosd\"]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  }
+ ],
+ "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
+}