Siria Sadeddin
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.
$C_n^m=\frac{m!}{n!(m-n)}$
# valor del elemto n,m del triangulo de pascal
def pascal_nm(m,n):
"""value of the pascal triangle for row m and position n
Args:
m (int): pascal triangle row
n (int): row position
Returns:
int: pascal triangle value
"""
import math
class bcolors:
FAIL = '\033[91m'
ENDC = '\033[0m'
#utiliza formula para calcular el valor nm
if all([isinstance(m,int),isinstance(n,int)]) and (n<m+1):
return int(math.factorial(m)/(math.factorial(n)*math.factorial(m-n)))
else:
if not all([isinstance(m,int),isinstance(n,int)]):
print(f"{bcolors.FAIL}FALLO: Esta funcion recibe 2 entradas de numeros enteros{bcolors.ENDC}")
elif not (n<m+1):
print(f"{bcolors.FAIL}FALLO: el numero de items en la fila n es n+1{bcolors.ENDC}")
#n-esima fila del triangulo de pascal
def pascal_n(n):
"""create a list containing the values of the pascal triangle fon row n
Args:
n: integer
Returns:
list: pascal triangle list
"""
class bcolors:
FAIL = '\033[91m'
ENDC = '\033[0m'
if isinstance(n, int):
return [pascal_nm(n,i) for i in range(n+1)]
else:
print(f"{bcolors.FAIL}FALLO: Esta funcion recibe un numero entero como argumento de entrada{bcolors.ENDC}")
pascal_nm(3,2)
pascal_n(4)
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.
# lista con todos los valores del triangulo de pascal para las filas solicitadas
def pascal_triangle(*arg):
"""create a list containing the values of the pascal triangle rows n0, n1, n2,…
Args:
arg: n1, n2, n3,… integers
Returns:
list: pascal triangle list
"""
class bcolors:
FAIL = '\033[91m'
ENDC = '\033[0m'
if all([isinstance(x,int) for x in arg]):
return [pascal_n(n) for n in arg]
else:
print(f"{bcolors.FAIL}FALLO: Esta funcion recibe n numeros enteros como argumentos de entrada{bcolors.ENDC}")
## ejemplo
pascal_triangle(0,1,2,3,4,5,6,7)