Este tutorial le enseñará cómo Imprimir Triángulo de Pascal en Python para un número determinado de filas.
Comenzará aprendiendo cómo construir el triángulo de Pascal. Luego procederá a escribir una función de Python y aprenderá a optimizarla aún más.
▶️ ¡Comenzamos!
What is Pascal’s Triangle & How to Construct it?
Imprimir el triángulo de Pascal para un número dado de filas es una pregunta popular en las entrevistas.
En el triángulo de Pascal con n filas, número de fila i tiene i elementos.
Entonces, la primera fila tiene un elemento, y es 1. Y cada elemento en las filas posteriores es la suma de los dos números. directamente arriba él.
La siguiente figura explica cómo construir el triángulo de Pascal con cinco filas.

Observe cómo puede rellenar ceros cuando tiene solo un numero por encima de un número determinado.
📝Como ejercicio rápido, sigue el procedimiento anterior para construir el triángulo de Pascal para n = 6 y n = 7.
A continuación, procedamos a escribir algo de código. Puede optar por ejecutar los fragmentos de código en IDE Python de Geekflare directamente desde su navegador, mientras avanza en el tutorial.
Python Function to Print Pascal’s Triangle
En esta sección, escribamos una función de Python para imprimir el triángulo de Pascal para cualquier número de filas.
Hay dos preguntas clave a considerar:
- ¿Cómo expresar las entradas en el triángulo de Pascal?
- ¿Cómo imprimir el triángulo de Pascal con el espaciado y el formato adecuados?
Vamos a responderlas ahora.
#1. ¿Cuál es la expresión para cada entrada en el triángulo de Pascal?
Sucede que las entradas en el triángulo de Pascal se pueden obtener usando la fórmula para nCr
. Si recuerdas de las matemáticas de tu escuela, nCr
indica el número de formas que puede elegir r
elementos de un conjunto de n
los productos.
La formula para nCr
se da a continuación:

Ahora procedamos a expresar las entradas en el triángulo de Pascal usando el nCr
fórmula.

Ahora hemos encontrado una manera de expresar las entradas en la matriz.
#2. ¿Cómo ajustar el espaciado al imprimir el patrón?
En el triángulo de Pascal con numRows
, la fila #1 tiene una entrada, la fila #2 tiene dos entradas y así sucesivamente. Para imprimir el patrón como un triángulo, necesitarás numRows - i
espacios en la fila #i. Y puedes usar Python range
función en conjunto con for
bucle para hacer esto.
A este tenor,
range
excluye el punto final de forma predeterminada, asegúrese de agregar+ 1
para obtener el número requerido de espacios iniciales.
Ahora que ha aprendido a representar entradas y también a ajustar el espacio mientras imprime el triángulo de Pascal, avancemos y definamos la función. pascal_tri
.
Análisis de la definición de la función
Entonces, ¿qué quieres que sea la función? pascal_tri
que hacer?
- La función
pascal_tri
debe aceptar el número de filas (numRows
) como argumento. - Debe imprimir el triángulo de Pascal con
numRows
.
Para calcular el factorial, usemos factorial
función de la función incorporada de Python math
módulo.
▶️ Ejecute la siguiente celda de código para importar factorial
y utilícelo en su módulo actual.
from math import factorial
El fragmento de código siguiente contiene la definición de la función.
def pascal_tri(numRows):
'''Print Pascal's triangle with numRows.'''
for i in range(numRows):
# loop to get leading spaces
for j in range(numRows-i+1):
print(end=" ")
# loop to get elements of row i
for j in range(i+1):
# nCr = n!/((n-r)!*r!)
print(factorial(i)//(factorial(j)*factorial(i-j)), end=" ")
# print each row in a new line
print("\n")
La función funciona de la siguiente manera:
- La función
pascal_tri
tiene un parámetro requeridonumRows
: el número de filas. - Existen
numRows
filas en total. por cada filai
, añadimosnumRows - i
espacios iniciales antes de la primera entrada en la fila. - Luego usamos
nCr
fórmula para calcular las entradas individuales. por filai
, las entradas soniCj
dondej = {0,1,2,..,i}
. - Observa que usamos
//
que realiza la división de enteros, ya que nos gustaría que las entradas fueran números enteros. - Después de calcular todas las entradas en una fila, imprima la siguiente fila en una nueva línea.
🔗 Como hemos añadido un cadena de documentación, puede usar el integrado de Python help
función, o la __doc__
atributo para acceder a la cadena de documentación de la función. El fragmento de código a continuación muestra cómo hacerlo.
help(pascal_tri)
# Output
Help on function pascal_tri in module __main__:
pascal_tri(numRows)
Print Pascal's triangle with numRows.
pascal_tri.__doc__
# Output
Print Pascal's triangle with numRows.
Ahora sigamos adelante y llamemos a la función con el número de filas como argumento.
pascal_tri(3)
# Output
1
1 1
1 2 1
Las primeras 3 filas del triángulo de Pascal se imprimen, como se esperaba.
Print Pascal’s Triangle Using Recursion
En la sección anterior, identificamos la expresión matemática de cada entrada en el Triángulo de Pascal. Sin embargo, no utilizamos la relación entre entradas en dos filas consecutivas.
De hecho, usamos la fila anterior para calcular las entradas en la fila siguiente. ¿No podemos usar esto y llegar a un recursiva implementación de la función pascal_tri
?
¡Si hagamos eso!
En una recursiva implementación, una función se llama repetidamente a sí misma hasta que caso base se cumple. En la construcción del triángulo de Pascal, comenzamos con la primera fila con una entrada
1
y, a continuación, cree las filas siguientes.
Entonces la función llama a pascal_tri(numRows)
a su vez llama pascal_tri(numRows-1)
y así sucesivamente, hasta el caso base pascal_tri(1)
sea alcanzado.
Considere el ejemplo donde necesita imprimir las primeras 3 filas del triángulo de Pascal. La siguiente imagen explica cómo se empujan las llamadas recursivas a la pila. Y cómo las llamadas de funciones recursivas devuelven las filas del triángulo de Pascal.

▶️ Ejecute el fragmento de código a continuación para generar las filas del triángulo de Pascal de forma recursiva.
def pascal_tri(numRows):
'''Print Pascal's triangle with numRows.'''
if numRows == 1:
return [[1]] # base case is reached!
else:
res_arr = pascal_tri(numRows-1) # recursive call to pascal_tri
# use previous row to calculate current row
cur_row = [1] # every row starts with 1
prev_row = res_arr[-1]
for i in range(len(prev_row)-1):
# sum of 2 entries directly above
cur_row.append(prev_row[i] + prev_row[i+1])
cur_row += [1] # every row ends with 1
res_arr.append(cur_row)
return res_arr
Aquí hay algunos puntos que vale la pena tomar nota:
- Hemos usado una lista anidada como estructura de datos, donde cada fila en el triángulo de Pascal es una lista en sí misma, como esta: [[fila 1], [fila 2],…,[fila n]].
- La llamada a la función
pascal_tri(numRows)
desencadena una serie de llamadas recursivas connumRows - 1
,numRows - 2
todo el camino hasta 1 como argumentos. Estas llamadas se colocan en una pila. - Cuándo
numRows == 1
, llegamos al caso base y la función devuelve [[1]]. - Ahora la lista devuelta es utilizada por las funciones subsiguientes en la pila de llamadas para calcular la siguiente fila.
- If
cur_row
es la fila actual,cur_row[i] = prev_row[i] + prev_row[i+1]
—la suma de 2 elementos directamente sobre el índice actual.
Como la matriz devuelta es una lista anidada (lista de listas), debemos ajustar el espaciado e imprimir las entradas, como se muestra en la celda de código a continuación.
tri_array = pascal_tri(5)
for i,row in enumerate(tri_array):
for j in range(len(tri_array) - i + 1):
print(end=" ") # leading spaces
for j in row:
print(j, end=" ") # print entries
print("\n") # print new line
¡La salida es correcta, como se ve a continuación!
# Output
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Python Function to Print Pascal’s Triangle for numRows ≤ 5
Ambos métodos que ha aprendido funcionarán para imprimir el triángulo de Pascal para un número arbitrario de filas numRows
.
Sin embargo, hay momentos en los que necesita imprimir el triángulo de Pascal para un número menor de filas. Y cuando el número de filas que necesita imprimir es como máximo 5, puede usar una técnica sencilla.
Ir a través de la figura de abajo. Y observa cómo las potencias de 11 son idénticas a las entradas en el triángulo de Pascal. Además, observe que esto funciona solo hasta la cuarta potencia de 4. Es decir, 11 elevado a las potencias {11, 0, 1, 2, 3} da las entradas en las filas 4 a 1 del triángulo de Pascal.

Reescribamos la definición de la función, como se muestra a continuación:
def pascal_tri(numRows):
'''Print Pascal's triangle with numRows.'''
for i in range(numRows):
print(' '*(numRows-i), end='')
# compute power of 11
print(' '.join(str(11**i)))
Así es como funciona la función pascal_tri
obras:
- Al igual que con los ejemplos anteriores, ajustamos el espaciado.
- Y luego, usamos el operador de exponenciación de Python (**) para calcular las potencias de 11.
- Como las potencias de 11 son números enteros por defecto, conviértalos en una cadena usando str(). Ahora tienes las potencias de 11 como cadenas.
- Las cadenas en Python son iterables, por lo que puede recorrerlas y acceder a un carácter a la vez.
- A continuación, puede utilizar el
join()
método con la sintaxis:<sep>.join(<iterable>)
unir elementos en<iterable>
usar<sep>
como separador. - Aquí, necesitas un soltero espacio entre los caracteres, por lo que
<sep>
se mostrarán' '
,<iterable>
es cadena: potencia de 11.
Verifiquemos si la función funciona según lo previsto.
pascal_tri(5)
# Output
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Como otro ejemplo, llame a la función pascal_tri
con 4 como argumento.
pascal_tri(4)
# Output
1
1 1
1 2 1
1 3 3 1
Espero que sepa entender cómo puede imprimir fácilmente el triángulo de Pascal para numRows
en el rango de 1 a 5.
Conclusión
Esto es lo que hemos aprendido:
- Cómo construir el triángulo de Pascal con el número dado de filas. Cada número en cada fila es la suma de los dos números directamente arriba.
- Escriba una función de Python usando la fórmula nCr = n!/(nr)!.r! para calcular las entradas del triángulo de Pascal.
- Luego aprendiste un implementación recursiva de la función.
- Finalmente, aprendiste el método más óptimo para construir el triángulo de Pascal para
numRows
hasta 5—usando el potencias de 11.
Si está buscando mejorar sus habilidades de Python, aprenda a multiplicar matrices, compruebe si un numero es primoy resolver problemas en operaciones con cadenas. ¡Feliz codificación!