diff --git a/Ejercicio2.ipynb b/Ejercicio2.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..67eb98d2cdb0f4e8905546916519875e671dcddd
--- /dev/null
+++ b/Ejercicio2.ipynb
@@ -0,0 +1,245 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Ejercicio No. 2 - Triángulo de Pascal\n",
+    "**Enunciado:**\n",
+    "\n",
+    "- Escriba una rutina en python que reciba como entrada un número entero, $n$, e imprima los\n",
+    "números en la $n$-ésima fila del triángulo de Pascal. El programa debe verificar si el número\n",
+    "$n$ es entero, o arrojar un mensaje informando que ha habido un error del usuario en caso\n",
+    "contrario.\n",
+    "- Modifique la rutina anterior para que reciba un número variable de argumentos: $n_1$, $n_2$, $n_3$,...\n",
+    "y retorne una lista cuyo primer elemento es una lista conteniendo los números en la fila $n_1$\n",
+    "del triángulo de Pascal, el segundo elemento una lista con los números en la fila $n_2$, y así\n",
+    "sucesivamente.\n",
+    "\n",
+    "**Solución:** Hola, mi nombre es Sebastian Ordoñez (ordonezs). Para solucionar este ejercicio decidí hacer uso de la expresión conocida en términos de combinatorias para los elementos de la $n$-ésima fila. ASí pues, implemente una pequeña función auxiliar para calcular la combinatoria entre dos números y luego la usé para los propósitos específicos del triángulo."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Primera parte\n",
+    "\n",
+    "Primero se importa la libreria `math`, de la cual será útil especialmente la función que calcula el factorial de un entero positivo dado. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import math"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Ahora, con el fin de usar la expresión matemática conocida para los elementos del triángulo de Pascal, se implementa una función auxiliar que permite calcular la combinatoria entre dos enteros positivos, $n$ y $k$, tal que $0\\leq k\\leq n$ y su expresión está dada por $nCk = \\frac{n!}{k!(n-k)!}$."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def combinatory(n:int, k:int)->int:\n",
+    "    \"\"\"\n",
+    "    Esta fucnión calcula la combinatoria entre dos enteros dados.\n",
+    "    \n",
+    "    Input\n",
+    "    ------\n",
+    "    n (int): entero positivo mayor que k.\n",
+    "    k (int): entero positivo menor que n.\n",
+    "    \n",
+    "    Output\n",
+    "    ------\n",
+    "    comb (int): entero resultante de hacer la combinación entre n y k.\n",
+    "    \"\"\"\n",
+    "    if k>n or n<0 or k<0: # Condición matemática para que la operación factorial esté bien definida.\n",
+    "        \n",
+    "        return \"Recuerde que el segundo argumento ha de ser mayor que el primero y ambos positivos.\"\n",
+    "        \n",
+    "    else:\n",
+    "        f = math.factorial\n",
+    "        comb = int(f(n)/(f(k)*f(n-k))) # Definición de combinatoria\n",
+    "\n",
+    "        return comb            "
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Con el fin de completar lo requerido por el ejercicio se implementa la función principal `pascalTriangle`, la cual hace uso del hecho que la entrada de la $n$-ésima fila del triángulo en la posición $k$-ésima, está dada por $nCk$. Para más detalles consulte [aquí](https://en.wikipedia.org/wiki/Pascal%27s_triangle#Formula)."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def pascalTriangle(n:int)->list:\n",
+    "    \"\"\"\n",
+    "    Esta función recibe un número natural n y retorna los elementos de la n-ésima fila del triángulo de Pascal.\n",
+    "    La notación es tal que las primeras posiciones comienzan en cero.\n",
+    "    \n",
+    "    Input\n",
+    "    ------\n",
+    "    n (int): número que se espera que sea entero.\n",
+    "    \n",
+    "    Output\n",
+    "    ------\n",
+    "    triangleRow (list): lista de números que corresponden a la n-ésima fila del triángulo de Pascal.\n",
+    "    \"\"\"\n",
+    "    if type(n)!= int or n<0:\n",
+    "        return \"The number you gave is either non integer or is less than zero.\"\n",
+    "    else: \n",
+    "        triangleRow = []\n",
+    "        for k in range(n+1):\n",
+    "            triangleRow.append(combinatory(n,k))\n",
+    "        return triangleRow"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Ahora podemos probar la función principal para los casos triviales y algunos más complicados."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[1]\n",
+      "[1, 1]\n",
+      "[1, 2, 1]\n",
+      "[1, 3, 3, 1]\n",
+      "[1, 4, 6, 4, 1]\n",
+      "[1, 5, 10, 10, 5, 1]\n",
+      "[1, 6, 15, 20, 15, 6, 1]\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(pascalTriangle(0))\n",
+    "print(pascalTriangle(1))\n",
+    "print(pascalTriangle(2))\n",
+    "print(pascalTriangle(3))\n",
+    "print(pascalTriangle(4))\n",
+    "print(pascalTriangle(5))\n",
+    "print(pascalTriangle(6))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## Segunda parte\n",
+    "\n",
+    "Continuando con la segunda parte del ejercicio, se procede a extender la función `pascalTriangle` a múltiples argumentos."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "def pascalTriangleExtended(*args)->list:\n",
+    "    \"\"\"\n",
+    "    Esta función recibe un número no definido de argumentos que se espera que correspondan a números naturales.\n",
+    "    \n",
+    "    Input\n",
+    "    ------\n",
+    "    *args: lista de argumentos con longitud no definida los cuales se espera que correspondan a números naturales.\n",
+    "    \n",
+    "    Output\n",
+    "    ------\n",
+    "    allRows (list): lista que contiene listas, las cuales corresponden a las filas del triángulo de Pascal asociadas\n",
+    "                    a los argumentos dados n1, n2, n3, etc.\n",
+    "    \"\"\"\n",
+    "    allRows = []\n",
+    "    for jj in args:\n",
+    "        if type(jj)!=int or jj<0:\n",
+    "            return \"At least one of the numbers you gave is either non integer or is less than zero.\"\n",
+    "            break\n",
+    "        else:\n",
+    "            triangleRow = []\n",
+    "            for k in range(jj+1):\n",
+    "                triangleRow.append(combinatory(jj,k))\n",
+    "            allRows.append(triangleRow)\n",
+    "            \n",
+    "    return allRows"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Podemos ahora comprobar la utilidad de esta nueva función `pascalTriangleExtended` usando como ejemplo algo que se hizo arriba en la primera parte en varias líneas."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[[1],\n",
+       " [1, 1],\n",
+       " [1, 2, 1],\n",
+       " [1, 3, 3, 1],\n",
+       " [1, 4, 6, 4, 1],\n",
+       " [1, 5, 10, 10, 5, 1],\n",
+       " [1, 6, 15, 20, 15, 6, 1]]"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "pascalTriangleExtended(0,1,2,3,4,5,6)"
+   ]
+  }
+ ],
+ "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
+}