diff --git a/ejercicio2.ipynb b/ejercicio2.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..a1373db1c95f0f6b9360cc72b65fd614028b05f0 --- /dev/null +++ b/ejercicio2.ipynb @@ -0,0 +1,236 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Juan David Hernández ejercicio2 clase 02" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1.Realizar un programa que reciba un número, luego identifique si este número es natural o no. Si es natural entonces el programa mostrará los coeficientes del triángulo de Pascal asociados a la fila correspondiente al número ingresado" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Primero importamos la librerÃa math que contiene la función factorial la cual se va a utilizar en el desarrollo del problema" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import math" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Por el teorema del binomio de Newton, sabemos que los coeficientes del triángulo de Pascal corresponden a los mismos del polinomio $$ (x+y)^n $$. Los cuales vienen dados por $a_i=\\begin{pmatrix}n\\\\i\\end{pmatrix}=\\frac{n!}{i!(n-i)!}$. Por lo tanto es útil definir la función combinación entre dos enteros para este problema" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def combinado(entero1,entero2):\n", + " combinacion=math.factorial(entero1)/(math.factorial(entero2)*math.factorial(entero1-entero2))\n", + " return combinacion" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ahora que tenemos la función combinación definida, creamos una función que nos muestre en una lista la combinación entre n e i, donde i va de 0 hasta n. Esta lista tendrá justamente los coeficientes de la n-ésima fila del triángulo de Pascal." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def filapascal(n):\n", + " i=0\n", + " a=[]\n", + " while i<=n:\n", + " a.append(combinado(n,i))\n", + " i+=1\n", + " return a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Necesitamos también que nuestro programa identifique si el número ingresado es o no natural para poder ejecutarse. Con la función de .is_integer() sabemos si el número es un entero y si además es positivo, entonces es natural y sirve para calcular la fila del triángulo de Pascal." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def printfila(n):\n", + " if (float(n).is_integer())==True and n>=0:\n", + " print(\"La fila\", n, \"del triángulo de Pascal es:\",filapascal(n))\n", + " else:\n", + " print(\"El número que ingresó no pertenece a los naturales, ingrese otro número\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ejemplo1 Calcular los números de la sexta fila del triángulo de Pascal." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "introduzca un número natural: 6\n" + ] + } + ], + "source": [ + "x = float(input(\"introduzca un número natural: \"))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "La fila 6.0 del triángulo de Pascal es: [1.0, 6.0, 15.0, 20.0, 15.0, 6.0, 1.0]\n" + ] + } + ], + "source": [ + "printfila(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ejemplo 2 Cuando el número es un racional negativo" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "El número que ingresó no pertenece a los naturales, ingrese otro número\n" + ] + } + ], + "source": [ + "printfila(-8.5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2.Ahora queremos que se pueda introducir un número variable de filas a calcular y que los coeficientes queden dentro de una lista." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para esto definimos una función, con la misma estructura del caso anterior, pero, cuyo argumento esté precedido por un *. Además esta función va añadiendo los coeficientes de cada fila en una nueva lista." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def printfilas(*numeros):\n", + " filas=[]\n", + " for n in numeros:\n", + " if (float(n).is_integer())==True and n>=0:\n", + " filas.append(filapascal(n))\n", + " else:\n", + " print(\"El número\",n, \"no pertenece a los naturales, ingrese otro número\")\n", + " print (filas)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ejemplo: Calcular los coeficientes de las filas (-1,8,3.5,4,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "El número -1 no pertenece a los naturales, ingrese otro número\n", + "El número 3.5 no pertenece a los naturales, ingrese otro número\n", + "[[1.0, 8.0, 28.0, 56.0, 70.0, 56.0, 28.0, 8.0, 1.0], [1.0, 4.0, 6.0, 4.0, 1.0], [1.0, 5.0, 10.0, 10.0, 5.0, 1.0]]\n" + ] + } + ], + "source": [ + "printfilas(-1,8,3.5,4,5)" + ] + } + ], + "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 +}