diff --git a/ejercicio2.ipynb b/ejercicio2.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..cd3c8e50d4984362c0493f4379aef7491956e62c --- /dev/null +++ b/ejercicio2.ipynb @@ -0,0 +1,198 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Nombre: Jennifer Ortega \n", + "### Ejercicio No. 2 - 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 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.\n", + "- Modifique la rutina anterior para que reciba un número variable de argumentos: $\\mathrm{n} 1, \\mathrm{n} 2, \\mathrm{n} 3, \\ldots$ y retorne una lista cuyo primer elemento es una lista conteniendo los números en la fila $\\mathrm{n} 1$ del triángulo de Pascal, el segundo elemento una lista con los números en la fila $\\mathrm{n} 2, \\mathrm{y}$ asà sucesivamente." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Resolución (1)\n", + "Los valores para el triángulo de Pascal pueden ser encontrados mediante la siguiente fórmula:\n", + "$$\\left(\\begin{array}{l}\n", + "n \\\\\n", + "r\n", + "\\end{array}\\right)=\\frac{n !}{r !(n-r) !}\n", + "$$\n", + "Donde n representa el número de la fila, r el número de la columna.\n", + "- Validamos si el número ingresado es un entero, con un **if().**\n", + "- Utilizamos las fórmula para encontrar los valores para la fila n-esima y mediante el uso de un **for()**." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# triangulo de pascal\n", + "from math import factorial \n", + "\n", + "def triangulo_pascal(n):\n", + " '''Devuelve los valores de la n-esima fila del triangulos de pascal, y ademas valida si el numero ingresado es entero'''\n", + " if type(n) == int: # valida si el numero es entero\n", + " print('Los valores del triangulo de pascal para la fila {} son:'.format(n))\n", + " for j in range(n+1):\n", + " print(factorial(n)//(factorial(j)*factorial(n-j)), end=\" \") # formula para valores del triangulo de pascal\n", + " print()\n", + " else:\n", + " print('Error, el numero no es entero')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error, el numero no es entero\n" + ] + } + ], + "source": [ + "n = 'hola'\n", + "triangulo_pascal(n)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Error, el numero no es entero\n" + ] + } + ], + "source": [ + "n = 5.5\n", + "triangulo_pascal(n)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Los valores del triangulo de pascal para la fila 4 son:\n", + "1 4 6 4 1 \n" + ] + } + ], + "source": [ + "n = 4\n", + "triangulo_pascal(n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Resolución (2)\n", + "- Modificamos la función de tal forma que no imprima los valores si no que los almacene en una lista.\n", + "- Creamos una nueva rutina que por medio de un **for()** recorra todos los valores ingresados y retorne sus correspondiente valores en el triángulo de pascal y los guarde en una lista, por lo que el resultado será una lista de listas." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def triangulo_pascal_lista(n):\n", + " '''Devuelve los valores de la n-esima fila del triangulos de pascal en una lista,\n", + " ademas valida si el numero ingresado es entero'''\n", + " lista = []\n", + " if type(n) == int: # valida si el numero es entero\n", + " for j in range(n+1):\n", + " x = factorial(n)//(factorial(j)*factorial(n-j)) # formula para valores del triangulo de pascal\n", + " lista.append(x)\n", + " #print(lista) \n", + " else:\n", + " print('Error, el numero no es entero')\n", + " return lista \n", + "\n", + "\n", + "def entrada(*numeros):\n", + " '''Recibe numeros y retorna los valores del triangulo de pascal para las filas correspondientes\n", + " a los valores ingresados '''\n", + " lista_lista = []\n", + " for numero in numeros:\n", + " y = triangulo_pascal_lista(numero)\n", + " lista_lista.append(y)\n", + " print(lista_lista) " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1], [1, 7, 21, 35, 35, 21, 7, 1], [1, 8, 28, 56, 70, 56, 28, 8, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]]\n" + ] + } + ], + "source": [ + "entrada(2,3,4,5,6,7,8,9)" + ] + }, + { + "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 +}