"1.- 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."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2.- 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 n1 del triángulo de Pascal, el segundo elemento una lista con los números en la fila $n2$, y así sucesivamente."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Solución:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"El programa que vamos a crear va a reproducir las filas del triangulo de Pascal a partir de las 2 primeras filas"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Recordemos que el tirangulo de Pascal está dado por:\n",
"\n",
"# 1 ----------> 0 \n",
"## 1#1 ---------> 1 \n",
"### 1#2#1 --------> 2 \n",
"#### 1#3#3#1 -------> 3 \n",
"##### 1#4#6#4#1 ------> 4 \n",
"###### 1#5#10#10#5#1 -----> 5\n",
"####### 1#6#15#20#15#6#1 ----> 6\n",
"######## 1#7#21#35#35#21#7#1 ---> 7"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Para definir una función que reproduzca las filas del triángulo de Pascal, se debe tomar en cuenta que cada fila se construye a partir de los elementos de la fila anterior. \n",
"Una variable tipo lista es apropiada para la ocasión porque identifica cada elmento de la misma con un caracter numérico. "
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"def pascal_triangle(N):\n",
" \n",
" v = True # Esta variable define si el programa imprime o no un resultado.\n",
" \n",
" piso = [[1],[1,1]] # Definimos una lista cuyos elementos son listas con las primeras dos filas del triángulo.\n",
" ## Se han decidido usar listas para poder llamar los elementos de la misma usando una funcion range.\n",
" \n",
" if type(N) == int: # Con este condicional, vamos a asegurarnos que la variable de entrada sea un número entero.\n",
" print('Los números son enteros, aquí tiene la tupla.')\n",
" else:\n",
" print('Error, se debe ingresar un números entero')\n",
" v = False # En caso que al correr el programa, lleguemos a este 'else', el programa no podrá imprimir resultado.\n",
" \n",
" for i in range(1,N): # Con este bucle se van a agregar elementos a la lista \"piso\".\n",
" \n",
" siguiente_piso = [] # creamos una lista vacía que se supone tendrá el siguiente piso del triángulo.\n",
" \n",
" for j in range(0,len(piso[i])-1,1): # Con j en el rango dado, vamos a poder recorrer los elementos del piso anterior\n",
" ## con el objetivo de construir el siguiente piso.\n",
" siguiente_piso.insert(0,1) # Agregamos en la primera posición el respectivo 1\n",
" siguiente_piso.append(1) # Agregamos en la última posición el respectivo 1\n",
" \n",
" piso.append(siguiente_piso) # Agregamos el piso construido a la lista de filas del triángulo de Pascal.\n",
" \n",
" #Finalmente, presentamos el resultado de la fila del triángulo solicitada\n",
" if v== True:\n",
" return piso[N]"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Los números son enteros, aquí tiene la tupla.\n"
]
},
{
"data": {
"text/plain": [
"[1, 5, 10, 10, 5, 1]"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Hacemos una prueba para verificar los resultados:\n",
"pascal_triangle(5)"
]
},
{
"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.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
%% Cell type:markdown id: tags:
# **Tarea 2. Ejercicio 2.**
## Daniel Brito.
## @britod
%% Cell type:markdown id: tags:
1.- 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.
%% Cell type:markdown id: tags:
2.- 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 n1 del triángulo de Pascal, el segundo elemento una lista con los números en la fila $n2$, y así sucesivamente.
%% Cell type:markdown id: tags:
#### Solución:
%% Cell type:markdown id: tags:
El programa que vamos a crear va a reproducir las filas del triangulo de Pascal a partir de las 2 primeras filas
%% Cell type:code id: tags:
``` python
# Recordemos que el tirangulo de Pascal está dado por:
# 1 ----------> 0
## 1#1 ---------> 1
### 1#2#1 --------> 2
#### 1#3#3#1 -------> 3
##### 1#4#6#4#1 ------> 4
###### 1#5#10#10#5#1 -----> 5
####### 1#6#15#20#15#6#1 ----> 6
######## 1#7#21#35#35#21#7#1 ---> 7
```
%% Cell type:markdown id: tags:
Para definir una función que reproduzca las filas del triángulo de Pascal, se debe tomar en cuenta que cada fila se construye a partir de los elementos de la fila anterior.
Una variable tipo lista es apropiada para la ocasión porque identifica cada elmento de la misma con un caracter numérico.
%% Cell type:code id: tags:
``` python
defpascal_triangle(N):
v=True# Esta variable define si el programa imprime o no un resultado.
piso=[[1],[1,1]]# Definimos una lista cuyos elementos son listas con las primeras dos filas del triángulo.
## Se han decidido usar listas para poder llamar los elementos de la misma usando una funcion range.
iftype(N)==int:# Con este condicional, vamos a asegurarnos que la variable de entrada sea un número entero.
print('Los números son enteros, aquí tiene la tupla.')
else:
print('Error, se debe ingresar un números entero')
v=False# En caso que al correr el programa, lleguemos a este 'else', el programa no podrá imprimir resultado.
foriinrange(1,N):# Con este bucle se van a agregar elementos a la lista "piso".
siguiente_piso=[]# creamos una lista vacía que se supone tendrá el siguiente piso del triángulo.
forjinrange(0,len(piso[i])-1,1):# Con j en el rango dado, vamos a poder recorrer los elementos del piso anterior
## con el objetivo de construir el siguiente piso.
siguiente_piso.append(piso[i][j]+piso[i][j+1])
siguiente_piso.insert(0,1)# Agregamos en la primera posición el respectivo 1
siguiente_piso.append(1)# Agregamos en la última posición el respectivo 1
piso.append(siguiente_piso)# Agregamos el piso construido a la lista de filas del triángulo de Pascal.
#Finalmente, presentamos el resultado de la fila del triángulo solicitada
ifv==True:
returnpiso[N]
```
%% Cell type:code id: tags:
``` python
# Hacemos una prueba para verificar los resultados: