{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# José Martin Serrano Torres\n",
    "\n",
    "# TRIANGULO DE PASCAL\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Escriba una rutina en python que reciba com entrada un número entero, n, e imprima los números de la n-esima 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."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " Al poner cada fila del triangulo de pascal en una matriz se obtine que el termino 0,0 de la matriz corresponde a la primera fila del triangulo de pascal, el termino 1,1 tambien tendria el número 1 y asi sucesicamente para los i=j de la matriz, seguidamente todos los terminos de la primera columna tienen termino igual a 1, el esquema se muestra a continuación"
   ]
  },
  {
   "attachments": {
    "TPascal2-3.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![TPascal2-3.png](attachment:TPascal2-3.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### analizando en este caso los indices i corresponden a las filas y  los indices j a las columnas\n",
    "Primero : para todo i y j = o --> elemento de la matriz igual a 1\n",
    "\n",
    "segundo  : para i == j --> elementos de la matriz igual a 1\n",
    "\n",
    "tercero : para j < i  --> elemento de la matriz es igual a [i-1] [j] + [i-1][j-1], por ejemplo el termino  [3][1]=[2][1]+[2][0]=2+1=0 correspondiendo al termino del triangulo de pascal"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Definimos una funcion con los pasos mencionados anteriormente"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def triangulo_pascal(num): # num es el digito ingresado por el usuario \n",
    "    a= [[] for i in range(num)] #creamos una matriz m, con columnas vacias \n",
    "    for i in range(num):\n",
    "        for j in range(i+1):\n",
    "            if(j<i): \n",
    "                if (j==0): # Segundo\n",
    "                    a[i].append(1)\n",
    "                else:\n",
    "                    a[i].append(a[i-1][j]+a[i-1][j-1]) # TERCERO \n",
    "            elif (j==i):\n",
    "                a[i].append(1) # primero \n",
    "    print(a[num-1]) # hacemos que imprima la penultima columna de la matriz \n",
    "    \n",
    "            "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Evaluamos : para num = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 4, 6, 4, 1]\n"
     ]
    }
   ],
   "source": [
    "triangulo_pascal(5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "segun el problema nos piden que ingresemos un digito y que evaluemos si es entero o no y dar un mensaje al usuario si este no lo es."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ingrese un numero entero positivo mayor que cero porfavor:\t8\n"
     ]
    }
   ],
   "source": [
    "valor = True\n",
    "while valor==True :\n",
    "    try:\n",
    "        num = int(input('ingrese un numero entero positivo mayor que cero porfavor:\\t'))\n",
    "        #evalua si el digito ingresado es entero, si lo es rompe el while\n",
    "        if (type(num)==int and num>0):  \n",
    "            valor = False\n",
    "    except:\n",
    "        #mensaje mostrado por no ingresar un entero\n",
    "        print('por favor,intente otra vez con un numero entero') "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### mostramos el triangulo de pascal para el numero ingresado"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 7, 21, 35, 35, 21, 7, 1]\n"
     ]
    }
   ],
   "source": [
    "triangulo_pascal(num) # num es igual a 8 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 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 n1del 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": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ingrese una lista de enteros seguidos por una coma:\t1,5,6,7,9,2,3\n"
     ]
    }
   ],
   "source": [
    "valor = True\n",
    "while valor==True :\n",
    "    try:\n",
    "        num = input('ingrese una lista de enteros seguidos por una coma:\\t')\n",
    "        new_list = num.split(',')\n",
    "        #pasasamos los valores str de la lista a int \n",
    "        new_num=[int(x) for x in new_list] \n",
    "        for i in range(len(new_num)):\n",
    "             #investigamos si sus componentes son enteros\n",
    "            if (type(new_num[i])== int):  \n",
    "                valor= False\n",
    "            else:\n",
    "                #en caso de que uno no sea entero rompe el for y pasamos al except\n",
    "                valor = True  \n",
    "                break\n",
    "    except:\n",
    "        #mensaje mostrado por no ingresar un enter\n",
    "        print('por favor,intente otra vez con una lista de enteros y seguido por comas')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### imprimimos las filas solicitadas del triangulo de pascal"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1]\n",
      "[1, 4, 6, 4, 1]\n",
      "[1, 5, 10, 10, 5, 1]\n",
      "[1, 6, 15, 20, 15, 6, 1]\n",
      "[1, 8, 28, 56, 70, 56, 28, 8, 1]\n",
      "[1, 1]\n",
      "[1, 2, 1]\n"
     ]
    }
   ],
   "source": [
    "lista = [triangulo_pascal(i) for i in new_num] # creamos una lista de comprencion para llamar a triangulo de pascal"
   ]
  }
 ],
 "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
}