diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..445d6dfd5dedbe77a0a7e3f627e6d01dc47bf231
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+.ipynb_checkpoints
+
+
+
+
+
+/
diff --git a/TareasClase2.ipynb b/TareasClase2.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..20816336a7523acbd6cdaf77b9afa433f4be77c2
--- /dev/null
+++ b/TareasClase2.ipynb
@@ -0,0 +1,426 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Ejercicio 1\n",
+    "En la primera celda tomamos una lista de entrada del usuario. En la segunda usamos la función `.split` para crear una lista con cada palabra, la ordenamos con `sorted`, y finalmente la juntamos de nuevo con `.join` (siempre tenemos en cuenta que el separador es -)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 18,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Palabras de entrada (separadas por guiones): último-intento-ya-después-de-haber-renombrado-la-variable\n"
+     ]
+    }
+   ],
+   "source": [
+    "inStr = str(input(r\"Palabras de entrada (separadas por guiones): \"))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 19,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "inStr = \"-\".join(sorted(inStr.split(\"-\")))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 20,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "de-después-haber-intento-la-renombrado-variable-ya-último\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(inStr)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Ejercicio 2\n",
+    "## Parte 1\n",
+    "Para la primera parte importamos la función `factorial` y definimos una función que retorna el coeficiente binomial $n\\choose k$."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from math import factorial"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "binomCoef = lambda n, k: factorial(n)/(factorial(k)*factorial(n-k))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "El usuario inserta $n$ deseado: si el valor de la entrada es igual sin importar si se transforma a un float o a un int, entonces podemos concluir que $n \\in \\mathbb{Z}$."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 41,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "¿Número de la fila?8\n"
+     ]
+    }
+   ],
+   "source": [
+    "N = float(input(r\"¿Número de la fila?\"))\n",
+    "if N != int(N):\n",
+    "    print(\"Error: n no es entero\")\n",
+    "N = int(N)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Finamente, poblamos la lista `nRow` con los coeficientes de la fila correspondiente en el triángulo de Pascal e imprimimos."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 44,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[1.0, 8.0, 28.0, 56.0, 70.0, 56.0, 28.0, 8.0, 1.0]\n"
+     ]
+    }
+   ],
+   "source": [
+    "nRow = []\n",
+    "for k in range(N+1):\n",
+    "    nRow.append(binomCoef(N, k))\n",
+    "print(nRow)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Parte 2\n",
+    "Para la segunda parte reusamos una línea del primer punto, e insertamos los números de las filas separados por puntos; esto ayuda a que no se puedan insertar números no enteros. Luego convertimos cada elemento en un int."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 52,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Inserte los números de las filas separados por puntos: 0.1.2.3.4.5\n"
+     ]
+    }
+   ],
+   "source": [
+    "manyN = input(\"Inserte los números de las filas separados por puntos: \")\n",
+    "manyN = [int(n) for n in manyN.split(\".\")]"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Reusamos el código de la parte anterior, salvo que esta vez está dentro de otro loop que itera sobre cada fila $n_i$. Las filas que se obtienen se adicionan a una lista `rows`."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 53,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "rows = []\n",
+    "for N in manyN:\n",
+    "    nRow=[]\n",
+    "    for k in range(N+1):\n",
+    "        nRow.append(binomCoef(N, k))\n",
+    "    rows.append(nRow)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Finalmente imprimimos cada fila en orden de entrada. En este caso se muestran las filas de la 0 a la 5"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 54,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[1.0]\n",
+      "[1.0, 1.0]\n",
+      "[1.0, 2.0, 1.0]\n",
+      "[1.0, 3.0, 3.0, 1.0]\n",
+      "[1.0, 4.0, 6.0, 4.0, 1.0]\n",
+      "[1.0, 5.0, 10.0, 10.0, 5.0, 1.0]\n"
+     ]
+    }
+   ],
+   "source": [
+    "for i in range(len(manyN)):\n",
+    "    print(rows[i])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Ejercicio 3\n",
+    "Con la función `newEntry` se puede poblar el diccionario.\n",
+    "\n",
+    "* reyesf/Felipe/Reyes/Colombia/Cali/22/Univalle/Gimnasio\n",
+    "* varelaj/Jalil/Varela/Colombia/Palmira/21/Univalle/Age of mythology\n",
+    "* vargass/Sasiri/Vargas/Colombia/Cali/20/Univalle/Bailar"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 105,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def newEntry(d):\n",
+    "    info = input(r\"Info de nueva entrada (sep. por /)\")\n",
+    "    info = info.split(\"/\")\n",
+    "    print(info)\n",
+    "    #info = matter/nombre/apellido/pais/residencia/edad/institucion/hobbie\n",
+    "    subd = {\"nombre\": info[1], \"apellido\":info[2], \"país\":info[3], \"residencia\":info[4], \"edad\":info[5], \"institución\":info[6], \"hobbie\":info[7]}\n",
+    "    d[info[0]] = subd"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 106,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "compas = {}"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 109,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Info de nueva entrada (sep. por /)vargass/Sasiri/Vargas/Colombia/Cali/20/Univalle/Bailar\n",
+      "['vargass', 'Sasiri', 'Vargas', 'Colombia', 'Cali', '20', 'Univalle', 'Bailar']\n"
+     ]
+    }
+   ],
+   "source": [
+    "newEntry(compas)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Definimos las tres funciones que se piden. Todas usan el mismo principio de iterar sobre las llaves de `compas`, e inspeccionar los contenidos de cada una. En la función que retorna las instituciones usamos un set para evitar entradas duplicadas."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 113,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def sortPais(d, pais):\n",
+    "    names = []\n",
+    "    for matter in d:\n",
+    "        if d[matter][\"país\"] == pais: \n",
+    "            names.append(matter)\n",
+    "    ## En caso de necesitar tabular de otra manera se deja así.\n",
+    "    ## De lo contrario se puede hacer un solo loop.\n",
+    "    for matter in names:\n",
+    "        print(d[matter])\n",
+    "        \n",
+    "def edadMedia(d):\n",
+    "    prom = []\n",
+    "    for matter in d:\n",
+    "        prom.append(float(compas[matter][\"edad\"]))\n",
+    "    print(sum(prom)/len(prom)) \n",
+    "    \n",
+    "def instit(d):\n",
+    "    instituciones = set()\n",
+    "    for matter in d:\n",
+    "        instituciones.add(compas[matter][\"institución\"])\n",
+    "    print(instituciones) "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 114,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "{'nombre': 'Felipe', 'apellido': 'Reyes', 'país': 'Colombia', 'residencia': 'Cali', 'edad': '22', 'institución': 'Univalle', 'hobbie': 'Gimnasio'}\n",
+      "{'nombre': 'Jalil', 'apellido': 'Varela', 'país': 'Colombia', 'residencia': 'Palmira', 'edad': '21', 'institución': 'Univalle', 'hobbie': 'Age of mythology'}\n",
+      "{'nombre': 'Sasiri', 'apellido': 'Vargas', 'país': 'Colombia', 'residencia': 'Cali', 'edad': '20', 'institución': 'Univalle', 'hobbie': 'Bailar'}\n"
+     ]
+    }
+   ],
+   "source": [
+    "sortPais(compas, \"Colombia\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 122,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "21.0\n"
+     ]
+    }
+   ],
+   "source": [
+    "edadMedia(compas)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 126,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "{'Univalle'}\n"
+     ]
+    }
+   ],
+   "source": [
+    "instit(compas)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "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
+}