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úmerones entero, o arrojar un mensaje informando que ha habido un error del usuario en casocontrario.
print('¿Que fila del triángulo de Pascal desea conocer?')
¿Que fila del triángulo de Pascal desea conocer?
n = input()
5
La construcción del triángulo está relacionada con los coeficientes binomiales según la fórmula combinatoria. Esta fórmula explica que los coeficientes (nodos del "árbol") de una fila dada del triángulo, se pueden calcular con la fórmula combinatoria de combinaciones de $n$ elementos de $k$ en $k$; expresado matemáticamente: $\tbinom n k$, dónde $n$ es la ''fila - 1'' y $k$ la posición en la fila.
def binomial(n,k):
"""
Calcula la combinatoria de n en k
"""
if k > n-k: k = n-k # Simetría de la combinatoria
accum = 1
for i in range(1,k+1):
accum *= (n - (k - i))
accum /= i
accum = int(accum) # Lo vuelve integer
return accum
def ej2(num):
"""
Entrega la enésima fila
del triángulo de Pascal
"""
num = int(num) #la entrada debe ser entero, en caso de ser decimal usa la parte entera
fila = [] # Lista vacía
for i in range(num):
fila.append(binomial(num-1,i)) # se va añadiendo cada término de combinatoria de la enesima fila
return print(fila)
print("La fila deseada es:")
ej2(n)
La fila deseada es: [1, 4, 6, 4, 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.
def ej2pt2(*args):
"""
Entrega la enésima fila
del triángulo de Pascal
de los números introducidos
"""
for x in args: #loop por cada elemento introducido
x = int(x) #entrada enteras, en caso de ser decima solo considera parte entera
fila = []
for i in range(x):
fila.append(binomial(x-1,i))# fila vacía, se añaden los términos de combinatoria que corresponden
print(fila)
En el caso de querer conocer, por ejemplo, las filas 3, 6 y 9:
print("Las filas deseadas son:")
ej2pt2(3,6,9)
Las filas deseadas son: [1, 2, 1] [1, 5, 10, 10, 5, 1] [1, 8, 28, 56, 70, 56, 28, 8, 1]