Usuario: vivasm.
Nombre: Mariana Vivas.
Institución: Universidad Central de Venezuela.
utilizaremos que se puede escribir con los coeficientes binomiales
Donde: $${n\choose k}=\frac{n!}{k!(n-k)!}$$
Por lo tanto, para calcular, por ejemplo, la tercera ($n=3$) fila del triangulo de Pascal, tenemos que calcular: $$ \begin{align} {3\choose 0} && {3\choose 1} && {3\choose 2} && {3\choose 3} \end{align} $$
# Importamos la librería 'math' para utilizar la función 'factorial'
import math
# Definimos una función que calcule el coeficiente binomial:
def nCk(n,k):
return int(math.factorial(n)/(math.factorial(k)*math.factorial(n-k)))
Comprobamos que la función de el valor correcto de la combinatoria
nCk(5,2)
Definimos la función que calcule los valores de la combinatoria para la n-ésima fila:
def fila(n):
fila=[] #para guardar la fila
#nos aseguramos que se haya insertado un número entero
try:
value = int(n)
#calculamos los valores de las combinatorias
for ii in range(value):
fila.append(nCk(value-1,ii)) #value-1 porque la primera fila es la combinatoria de {0,0}
#imprimimos los números separados por espacios
print(' '.join(str(jj) for jj in fila))
except:
print("Debe ser un número entero")
Comprobamos que la función arroja los valores deseados:
value=input('Inserte el número de fila: ') #el número insertado por el usuario
fila(value)
Comprobamos que si se inserta algo distinto a un numero entero la función arroja el mensaje esperado:
value=input('Inserte el número de fila: ') #el número insertado por el usuario
fila(value)
import re
val=input('Inserte las filas del triangulo de pascal que desea (ej: 2,3,5): ')
lista=[int(s) for s in re.findall(r'\b\d+\b', val)]
#\b es el principio o final de la palabra
#\d+ entero de uno o más dígitos
Nos aseguramos que la variable 'lista' contiene los números de tipo 'int' insertados por el usuario:
print('{} tiene entradas de tipo {}'.format(lista,[type(item) for item in lista]))
Utilizamos el código del item 1 y lo convertimos en una función que devuelva la fila del valor insertado:
def pascalfila(n):
fila=[] #guardamos los valores de la fila
for ii in range(n):
fila.append(nCk(n-1,ii)) #insertamos los valores de las combinatorias en la lista
return(fila)
Utilizamos esta función con un loop para obtener una lista de listas:
final=[] #la lista de las filas
for ii in lista:
final.append(pascalfila(ii)) #insertamos la lista de los valores de cada fila
print(final)