Mi nombre es Juan Carrillo. El objetivo de este notebook es resolver el Ejercicio No. 2
Ejercicio No. 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.
Teniendo en cuenta que se requiere tener una rutina se procede a genera una función llamada 'triangulo_pascal' la cual tiene como unico argumento el valor a, que corresponde a la n-ésima fila de la que se quieren obtener los datos
def triangulo_pascal(a):
#Como se requiere determinar si valor ingresado es un entero se realiza con la función 'try' de manera que si se obtiene
#un error se sabe que el número no es un entero y se le hace saber al usuario y la función finaliza
try:
a = int(a)
except:
print('El número no es un entero')
return
#La función genera una lista con un primer valor 1 considerando que el triangulo de pascal comienza con 1 en todas sus filas
l = [1]
#posteriormente itera i-veces según el tamaño del valor a, como el unico valor de la primera fila es 1 no se requiere iterar
# por lo que se tiene a = a - 1
a = a - 1
for i in range (a):
#se genera una lista llamada pascal, en la cuál se guardaran los valores correspondientes a la n-ésima fila, inicia guardando
#el valor de 1 considerando que todas las filas comienzan con 1, posteriormente itera para sumar el valor en el punto de la
#iteración y el valor siguiente, con el fin de sumar como se requiere para constuir el triangulo
pascal = list()
pascal.append(l[0])
for i in range(len(l)-1):
pascal.append(l[i]+l[i+1])
pascal.append(l[-1])
#Finalmente guarda el valor en la variable l para que se mantenga en la siguiente iteración y retorna la lista generada
l = pascal
return(l)
Como ejemplo se muestra la segunda fila del triangulo
triangulo_pascal(2)
[1, 1]
• 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.
La siguiente función 'triangulo_pascal_varios' es una modificación al punto anterior. La esencia de la misma se mantiene sin embargo se incluyé en un siglo for adicional que guardará una lista de listas generadas
def triangulo_pascal_varios(n):
#se inicializa una lista que guardará la lista de listas del triangulo de pascal
pascal_list=list()
#separa los valores entregados por el usuario, separados por ',' y determina si cada uno de ellos es entero, de no serlo
#los convierte en 0 para no afectar el resto de la función
n = n.split(',')
for a in n:
try:
a = int(a)
except:
a = 0
a = a - 1
if a == -1:
l = []
else:
l = [1]
for i in range (a):
pascal = []
pascal.append(l[0])
for i in range(len(l)-1):
pascal.append(l[i]+l[i+1])
pascal.append(l[-1])
l = pascal
#El resto de la función es igual con la única diferencia que agrega a la lista de listas el resultado obtenido para la fila
# a del triangulo y devuelve dicha lista de listas
pascal_list.append(l)
return(pascal_list)
Como ejemplo se muestra las primeras 4 filas del triangulo
n = input('Digite lista de números enteros:')
triangulo_pascal_varios(n)
Digite lista de números enteros:1,2,3,4
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]]