Skip to content
Snippets Groups Projects
Commit 89a1d5f3 authored by Jocabed Martínez's avatar Jocabed Martínez
Browse files

ejercicio 2 modificado

parent 03d59a6d
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
# Jocabed Martínez # Jocabed Martínez
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
## Ejercicio 2. Triángulo de Pascal ## Ejercicio 2. Triángulo de Pascal
* 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. * 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.
* 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. * 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: %% Cell type:markdown id: tags:
Creamos una función para obtener la n-ésima fila del triángulo de Pascal Creamos una función para obtener la n-ésima fila del triángulo de Pascal al ingresar un número entero.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
#Función para obtener la n-ésima fila del triángulo de Pascal #Función para obtener la n-ésima fila del triángulo de Pascal
def Pascal_triangle(n): #El argumento sería el número correspondiente a la fila deseada def Pascal_triangle(n): #El argumento sería el número correspondiente a la fila deseada
list1 = [] #Creamos una lista que contenga las n filas list1 = [] #Creamos una lista que contenga las n filas
for i in range(n): #Para cada posición de la lista anterior, agregaremos la fila, seria otra lista for i in range(n): #Para cada posición de la lista anterior, agregaremos la fila, seria otra lista
list2 = [] #Esta sería cada fila list2 = [] #Esta sería cada fila
for j in range(i + 1): #Para cada fila for j in range(i + 1): #Para cada fila
if j == 0 or j == i: #Para la primera y última posición de la fila, debe haber un uno if j == 0 or j == i: #Para la primera y última posición de la fila, debe haber un uno
list2.append(1) list2.append(1)
else: #Los valores intermedios son la suma de los valores de la fila anterior else: #Los valores intermedios son la suma de los valores de la fila anterior
list2.append(list1[i-1][j-1] + list1[i-1][j]) #y de la posición j y anterior list2.append(list1[i-1][j-1] + list1[i-1][j]) #y de la posición j y anterior
list1.append(list2) #Agregamos cada fila en la lista de n filas list1.append(list2) #Agregamos cada fila en la lista de n filas
print('La fila del triángulo de Pascal correspondiente al número', n, 'es:', list1[-1]) print('La fila del triángulo de Pascal correspondiente al número', n, 'es:', list1[-1])
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Ahora, para verificar si el número es entero, utilizamos try, except. Con try intentamos de que aplique la función definida anteriormente, si es un número entero, no habrá problema; si no es un número entero utilizamos el except para que muestre un mensaje de error. Ahora, para verificar si el número es entero, utilizamos try, except. Con try intentamos de que aplique la función definida anteriormente, si es un número entero, no habrá problema; si no es un número entero utilizamos el except para que muestre un mensaje de error.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
try: try:
Pascal_triangle(4) Pascal_triangle(4)
except: except:
print('Error. Lo que ha ingresado no es un número entero') print('Error. Lo que ha ingresado no es un número entero')
``` ```
%% Output %% Output
La fila del triángulo de Pascal correspondiente al número 4 es: [1, 3, 3, 1] La fila del triángulo de Pascal correspondiente al número 4 es: [1, 3, 3, 1]
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Vemos que para el número 4 se obtuvo la cuarta fila correspondiente al triángulo de Pascal. Ahora intentemos con otro número. Vemos que para el número 4 se obtuvo la cuarta fila correspondiente al triángulo de Pascal. Ahora intentemos con otro número.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
try: try:
Pascal_triangle(6) Pascal_triangle(6)
except: except:
print('Error. Lo que ha ingresado no es un número entero') print('Error. Lo que ha ingresado no es un número entero')
``` ```
%% Output %% Output
La fila del triángulo de Pascal correspondiente al número 6 es: [1, 5, 10, 10, 5, 1] La fila del triángulo de Pascal correspondiente al número 6 es: [1, 5, 10, 10, 5, 1]
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Vemos que para el número 6 se obtuvo la sexta fila correspondiente al triángulo de Pascal. Probemos ahora ingresar algo que no es un número entero. Vemos que para el número 6 se obtuvo la sexta fila correspondiente al triángulo de Pascal. Probemos ahora ingresar algo que no es un número entero.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
try: try:
Pascal_triangle(0.4) Pascal_triangle(0.4)
except: except:
print('Error. Lo que ha ingresado no es un número entero') print('Error. Lo que ha ingresado no es un número entero')
``` ```
%% Output %% Output
Error. Lo que ha ingresado no es un número entero Error. Lo que ha ingresado no es un número entero
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Vemos que para 0.4, efectivamente muestra un error, ya que 0.4 no es un número entero. Probemos con un string. Vemos que para 0.4, efectivamente muestra un error, ya que 0.4 no es un número entero. Probemos con un string.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
try: try:
Pascal_triangle('hola') Pascal_triangle('hola')
except: except:
print('Error. Lo que ha ingresado no es un número entero') print('Error. Lo que ha ingresado no es un número entero')
``` ```
%% Output %% Output
Error. Lo que ha ingresado no es un número entero Error. Lo que ha ingresado no es un número entero
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Nuevamente muestra el mismo error. Nuevamente muestra el mismo error.
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Ahora generalizamos lo anterior para varios n. Definimos ahora una función similar a la anterior pero que admita varios argumentos. Utilizamos también try y except dentro de la función para verificar si los números dados son enteros. Ahora generalizamos lo anterior para varios n. Definimos ahora una función similar a la anterior pero que admita varios argumentos. Utilizamos también try y except dentro de la función para verificar si los números dados son enteros.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
def Pascal_triangle_ns(*args): def Pascal_triangle_ns(*args):
lista_pascal = [] #Lista que va a contener las filas de todos los números lista_pascal = [] #Lista que va a contener las filas de todos los números
for n in args: for n in args:
try:#Si es un entero que haga el procedimiento para obtener la fila try:#Si es un entero que haga el procedimiento para obtener la fila
#EL procedimiento es similar al descrito en la función para un solo número #EL procedimiento es similar al descrito en la función para un solo número
list1 = [] list1 = []
for i in range(n): for i in range(n):
list2 = [] list2 = []
for j in range(i + 1): for j in range(i + 1):
if j == 0 or j == i: if j == 0 or j == i:
list2.append(1) list2.append(1)
else: else:
list2.append(list1[i-1][j-1] + list1[i-1][j]) list2.append(list1[i-1][j-1] + list1[i-1][j])
list1.append(list2) list1.append(list2)
lista_pascal.append(list1[-1]) lista_pascal.append(list1[-1])
except: #Si no es un entero que muestre un mensaje de error except: #Si no es un entero que muestre un mensaje de error
print('Error.', n, 'no es un entero') print('Error.', n, 'no es un entero')
print('Las filas son:', lista_pascal) print('Las filas son:', lista_pascal)
``` ```
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Probamos con 3 números. Probamos con 3 números enteros.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
Pascal_triangle_ns(4,6,5) Pascal_triangle_ns(4,6,5)
``` ```
%% Output %% Output
Las filas son: [[1, 3, 3, 1], [1, 5, 10, 10, 5, 1], [1, 4, 6, 4, 1]] Las filas son: [[1, 3, 3, 1], [1, 5, 10, 10, 5, 1], [1, 4, 6, 4, 1]]
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Probamos con 5 números. Probamos con 5 números enteros.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
Pascal_triangle_ns(4,6,5,3) Pascal_triangle_ns(4,6,5,3)
``` ```
%% Output %% Output
Las filas son: [[1, 3, 3, 1], [1, 5, 10, 10, 5, 1], [1, 4, 6, 4, 1], [1, 2, 1]] Las filas son: [[1, 3, 3, 1], [1, 5, 10, 10, 5, 1], [1, 4, 6, 4, 1], [1, 2, 1]]
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Vemos que se obtiene una lista con las filas correspondientes a cada número. Ahora probemos ingresando un número que sea entero. Vemos que se obtiene una lista con las filas correspondientes a cada número. Ahora probemos ingresando un número que no sea entero.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
Pascal_triangle_ns(4,6,5,0.4) Pascal_triangle_ns(4,6,5,0.4)
``` ```
%% Output %% Output
Error. 0.4 no es un entero Error. 0.4 no es un entero
Las filas son: [[1, 3, 3, 1], [1, 5, 10, 10, 5, 1], [1, 4, 6, 4, 1]] Las filas son: [[1, 3, 3, 1], [1, 5, 10, 10, 5, 1], [1, 4, 6, 4, 1]]
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
Obtenemos una lista con las filas de los que si son números enteros, mientras que para el que no es número entero obtenemos un mensaje de error. Intentemos ahora con un string y un float. Obtenemos una lista con las filas de los que si son números enteros, mientras que para el que no es número entero obtenemos un mensaje de error. Intentemos ahora con un string y un float.
%% Cell type:code id: tags: %% Cell type:code id: tags:
``` python ``` python
Pascal_triangle_ns(4,6,5,0.4,'hola') Pascal_triangle_ns(4,6,5,0.4,'hola')
``` ```
%% Output %% Output
Error. 0.4 no es un entero Error. 0.4 no es un entero
Error. hola no es un entero Error. hola no es un entero
Las filas son: [[1, 3, 3, 1], [1, 5, 10, 10, 5, 1], [1, 4, 6, 4, 1]] Las filas son: [[1, 3, 3, 1], [1, 5, 10, 10, 5, 1], [1, 4, 6, 4, 1]]
%% Cell type:markdown id: tags: %% Cell type:markdown id: tags:
De nuevo, obtenemos un mensaje de error para los que no son números enteros, y la lista de filas de los que si lo son. De nuevo, obtenemos un mensaje de error para los que no son números enteros, y la lista de filas de los que si lo son.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment