# -- importar librerias necesarias para calcular los valores de triángulo de pascal
import numpy as np
import math
Función que recibe un número n, comprueba si es entero y mayor a 0, retorna la n-ésima fila del triángulo de pascal
def triangulo_pascal(numero):
'''
Función que recibe un número n, comprueba si es entero y mayor a 0,
retorna la n-ésima fila del triángulo de pascal
'''
# -- comprueba si el numero es negativo
if numero <= 0:
return 'Numero negativo, ingrese número nuevamente'
# -- intenta determinar la fila de valores, sino lanza una excepción con mensaje
try:
# -- guarda cada fila del triángulo en una lista
values = []
for i in range(numero):
row = []
for j in range(i+1):
# -- los valores se pueden construir como una combinatoria de números
rel = np.math.factorial(i) / (np.math.factorial(j)*(np.math.factorial(i-j)))
# -- guarda el entero del valor de la combinatoria
row.append(int(rel))
# -- guarda los valores de la fila
values.append(row)
# -- imprime unicamente la último fila
return values[-1]
except:
return 'El numero ingresado no es correcto: error'
print('línea 10: {}'.format(triangulo_pascal(10)))
print('línea 10.1: {}'.format(triangulo_pascal(10.1)))
print('línea -1: {}'.format(triangulo_pascal(-1)))
print('línea 1: {}'.format(triangulo_pascal(1)))
print('línea 13: {}'.format(triangulo_pascal(13)))
línea 10: [1, 9, 36, 84, 126, 126, 84, 36, 9, 1] línea 10.1: El numero ingresado no es correcto: error línea -1: Numero negativo, ingrese número nuevamente línea 1: [1] línea 13: [1, 12, 66, 220, 495, 792, 924, 792, 495, 220, 66, 12, 1]
Función que recibe n números y retorna los valores del triángulo de pascal correspondiente a cada línea dada por cada uno de esos n números.
# -- * para poder recibir n cantidad de entradas
def triangulo_pascal_lista(*numero):
'''
Función que recibe n números y retorna los valores del triángulo de pascal correspondiente a cada línea dada
por cada uno de esos n números.
'''
# -- para guardar la n fila de cada *numero
final_values = []
# -- iterar sobre cada argumento recibido
for num in numero:
try:
values = []
for i in range(num):
row = []
for j in range(i+1):
rel = np.math.factorial(i) / (np.math.factorial(j)*(np.math.factorial(i-j)))
row.append(int(rel))
values.append(row)
final_values.append(values[-1])
# -- si alguno de los argumentos arroja la excepción, llenar en la lista con el string 'error, revise número'
except:
final_values.append('error, revise número')
return final_values
# -- ejemplos con números positivos
print(triangulo_pascal_lista(3,4,10))
print('línea 3: {} \nlínea 4: {} \nlínea 10: {}'. format(triangulo_pascal_lista(3,4,10)[0],
triangulo_pascal_lista(3,4,10)[1],
triangulo_pascal_lista(3,4,10)[2]))
print()
# -- ejemplos con números positivos
print(triangulo_pascal_lista(1,2,3))
print('línea 1: {} \nlínea 2: {} \nlínea 3: {}'. format(triangulo_pascal_lista(1,2,3)[0],
triangulo_pascal_lista(1,2,3)[1],
triangulo_pascal_lista(1,2,3)[2]))
print()
# -- ejemplos con un número decimal
print(triangulo_pascal_lista(1.1,2,3))
print('línea 1.1: {} \nlínea 2: {} \nlínea 3: {}'. format(triangulo_pascal_lista(1.1,2,3)[0],
triangulo_pascal_lista(1.1,2,3)[1],
triangulo_pascal_lista(1.1,2,3)[2]))
print()
# -- ejemplos con un número decimal y uno negativo
print(triangulo_pascal_lista(1.1,-2,3))
print('línea 1.1: {} \nlínea -2: {} \nlínea 3: {}'. format(triangulo_pascal_lista(1.1,-2,3)[0],
triangulo_pascal_lista(1.1,-2,3)[1],
triangulo_pascal_lista(1.1,-2,3)[2]))
print()
# -- ejemplos con mas numeros
print(triangulo_pascal_lista(10,1,3,14))
print('línea 10: {} \nlínea 1: {} \nlínea 3: {} \nlínea 14: {}'. format(triangulo_pascal_lista(10,1,3,14)[0],
triangulo_pascal_lista(10,1,3,14)[1],
triangulo_pascal_lista(10,1,3,14)[2],
triangulo_pascal_lista(10,1,3,14)[3]))
[[1, 2, 1], [1, 3, 3, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]] línea 3: [1, 2, 1] línea 4: [1, 3, 3, 1] línea 10: [1, 9, 36, 84, 126, 126, 84, 36, 9, 1] [[1], [1, 1], [1, 2, 1]] línea 1: [1] línea 2: [1, 1] línea 3: [1, 2, 1] ['error, revise número', [1, 1], [1, 2, 1]] línea 1.1: error, revise número línea 2: [1, 1] línea 3: [1, 2, 1] ['error, revise número', 'error, revise número', [1, 2, 1]] línea 1.1: error, revise número línea -2: error, revise número línea 3: [1, 2, 1] [[1, 9, 36, 84, 126, 126, 84, 36, 9, 1], [1], [1, 2, 1], [1, 13, 78, 286, 715, 1287, 1716, 1716, 1287, 715, 286, 78, 13, 1]] línea 10: [1, 9, 36, 84, 126, 126, 84, 36, 9, 1] línea 1: [1] línea 3: [1, 2, 1] línea 14: [1, 13, 78, 286, 715, 1287, 1716, 1716, 1287, 715, 286, 78, 13, 1]