"- Escriba una rutina en python que reciba como entrada un número entero,n, e imprima losnúmeros en lan-ésimafila del triángulo de Pascal. El programa debe verificar si el númerones entero, o arrojar un mensaje informando que ha habido un error del usuario en casocontrario.\n",
"- Escriba una rutina en python que reciba como entrada un número entero,n, e imprima losnúmeros en lan-ésimafila del triángulo de Pascal. El programa debe verificar si el númerones entero, o arrojar un mensaje informando que ha habido un error del usuario en casocontrario.\n",
"\n",
"\n",
"- 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.\n"
"- 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.\n"
],
],
...
@@ -38,7 +38,7 @@
...
@@ -38,7 +38,7 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": 23,
"execution_count": 13,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
...
@@ -83,23 +83,23 @@
...
@@ -83,23 +83,23 @@
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": 46,
"execution_count": 14,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"def linePascal(n):\n",
"def linePascal(n):\n",
" if type(n) is not int:\n",
" if type(n) is not int:\n",
" print (f'el valor enviado \\'{n}\\', no es un entero')\n",
" print (f'el valor enviado \\'{n}\\', no es un entero')\n",
" return []\n",
" return [] # retornar un lista vacia dado que la operacion no se puede relizar\n",
" elif n<0:\n",
" elif n<0:\n",
" print (f'el valor enviado \\'{n}\\', no es un entero positivo')\n",
" print (f'el valor enviado \\'{n}\\', no es un entero positivo')\n",
" return []\n",
" return []\n",
" return [comb(n,x) for x in range(n+1)]"
" return [comb(n,x) for x in range(n+1)]"
]
]
},
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": 47,
"execution_count": 10,
"metadata": {},
"metadata": {},
"outputs": [
"outputs": [
{
{
...
@@ -117,81 +117,68 @@
...
@@ -117,81 +117,68 @@
]
]
},
},
"metadata": {},
"metadata": {},
"execution_count": 47
"execution_count": 10
}
}
],
],
"source": [
"source": [
"linePascal(-12)"
"linePascal(-12)"
]
]
},
},
{
"source": [
"ahora vamos a incluir en la rutina que nuestro codigo sirva para diferentes consultas de los valores binomiales del triangulo de pascal."
],
"cell_type": "markdown",
"metadata": {}
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": 6,
"execution_count": 15,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"def pascal(orden, matriz=None):\n",
"def linesPascal(*lineas):\n",
" if matriz is None: matriz = [[1]]\n",
" resultado=list()\n",
" if orden == 1:\n",
" for request in lineas:\n",
" return matriz\n",
" resultado.append(linePascal(request))\n",
" prev_row = matriz[-1]\n",
" if resultado[-1]==[]:\n",
" new_row = [1] + [sum(i) for i in zip(prev_row, prev_row[1:])] + [1]\n",
"The zip object yields n-length tuples, where n is the number of iterables\n",
"passed as positional arguments to zip(). The i-th element in every tuple\n",
"comes from the i-th iterable argument to zip(). This continues until the\n",
"shortest argument is exhausted.\n",
"\u001b[0;31mType:\u001b[0m type\n",
"\u001b[0;31mSubclasses:\u001b[0m \n"
],
"name": "stdout"
}
}
],
],
"source": [
"source": [
"zip?\n"
"print(linesPascal(6,'a',4,5))"
]
]
},
},
{
{
...
...
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 2 Triángulo de Pascal
## 2 Triángulo de Pascal
- Escriba una rutina en python que reciba como entrada un número entero,n, e imprima losnúmeros en lan-ésimafila del triángulo de Pascal. El programa debe verificar si el númerones entero, o arrojar un mensaje informando que ha habido un error del usuario en casocontrario.
- Escriba una rutina en python que reciba como entrada un número entero,n, e imprima losnúmeros en lan-ésimafila del triángulo de Pascal. El programa debe verificar si el númerones entero, o arrojar un mensaje informando que ha habido un error del usuario en casocontrario.
- 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.
- 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 id: tags:
%% Cell type:code id: tags:
```
```
from math import comb
from math import comb
def linePascal(n):
def linePascal(n):
return [comb(n,x) for x in range(n+1)]
return [comb(n,x) for x in range(n+1)]
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
El modulo $math$, tiene un metodo llamado $comb$, el cual resuelve la combinatoria $C_{n}^{p}=\binom{n}{m}=\frac{n!}{p!(n-p)!}$ y dado que cada elemento de la fila se compone por la suma $(a+b)^n=\sum_{m=0}^{n}\binom{n}{m}a^{n-k}b^{n-k}$, los coeficientes binomoales se almacenaran en una lista que retornara la funcion definida
El modulo $math$, tiene un metodo llamado $comb$, el cual resuelve la combinatoria $C_{n}^{p}=\binom{n}{m}=\frac{n!}{p!(n-p)!}$ y dado que cada elemento de la fila se compone por la suma $(a+b)^n=\sum_{m=0}^{n}\binom{n}{m}a^{n-k}b^{n-k}$, los coeficientes binomoales se almacenaran en una lista que retornara la funcion definida
%% Cell type:code id: tags:
%% Cell type:code id: tags:
```
```
print(linePascal(10))
print(linePascal(10))
```
```
%% Output
%% Output
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
[1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]
%% Cell type:code id: tags:
%% Cell type:code id: tags:
```
```
Por otra parte debemos estar seguros que el imput sea un entero positivo para poder calcular los coeficientes binomiales con la formula anterior, asi que debemos incluir lienas de codigo para la validación
Por otra parte debemos estar seguros que el imput sea un entero positivo para poder calcular los coeficientes binomiales con la formula anterior, asi que debemos incluir lienas de codigo para la validación
```
```
%% Cell type:code id: tags:
%% Cell type:code id: tags:
```
```
def linePascal(n):
def linePascal(n):
if type(n) is not int:
if type(n) is not int:
print (f'el valor enviado \'{n}\', no es un entero')
print (f'el valor enviado \'{n}\', no es un entero')
return []
return [] # retornar un lista vacia dado que la operacion no se puede relizar
elif n<0:
elif n<0:
print (f'el valor enviado \'{n}\', no es un entero positivo')
print (f'el valor enviado \'{n}\', no es un entero positivo')
return []
return []
return [comb(n,x) for x in range(n+1)]
return [comb(n,x) for x in range(n+1)]
```
```
%% Cell type:code id: tags:
%% Cell type:code id: tags:
```
```
linePascal(-12)
linePascal(-12)
```
```
%% Output
%% Output
el valor enviado '-12', no es un entero positivo
el valor enviado '-12', no es un entero positivo
[]
[]
%% Cell type:markdown id: tags:
ahora vamos a incluir en la rutina que nuestro codigo sirva para diferentes consultas de los valores binomiales del triangulo de pascal.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
```
```
def pascal(orden, matriz=None):
def linesPascal(*lineas):
if matriz is None: matriz = [[1]]
resultado=list()
if orden == 1:
for request in lineas:
return matriz
resultado.append(linePascal(request))
prev_row = matriz[-1]
if resultado[-1]==[]:
new_row = [1] + [sum(i) for i in zip(prev_row, prev_row[1:])] + [1]