Enunciado del problema
Desarrollar un programa de consola que reciba como primer argumento un número entero positivo que indique el número de líneas del Triángulo de Pascal que se desea imprimir, la salida debería ser algo similar al siguiente gráfico:
Tener en cuenta que salvo los números inicial y final de cada fila, el resto de números son generados sumando los dos números que se encuentran sobre su posición en la fila superior.
Solución
Para lograr la solución de este problema, debemos aplicar el uso de funciones iterativas, quedando como se aprecia a continuación:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Programa que imprime en pantalla el triángulo de pascal"""
__author__ = 'Gonzalo Chacaltana Buleje'
#importamos el paquete sys para obtener los valores argv enviados por consola.
import sys
def triangle_pascal(rows):
"""Función que recibe como parámetro el número de filas del triángulo"""
#si el número de filas es cero devolvemos vacío.
if rows == 0:
return []
#si el número de filas es 1, devolvemos triángulo con una sola fila.
elif rows == 1:
return [[1]]
else:
#de lo contrario armamos el triángulo según el número de filas
new_row = [1]
#llamamos nuevamente a la función para armar el triángulo
result = triangle_pascal(rows-1)
#guardamos la última fila.
last_row = result[-1]
#iteramos la cantidad de veces del valor de filas - 1.
for i in range(len(last_row)-1):
#agregamos los valores a la nueva fila.
new_row.append(last_row[i] + last_row[i+1])
new_row += [1]
#agregamos a la matriz del triángulo la nueva fila
result.append(new_row)
#devolvemos el array con los valores del triángulo.
return result
#main del programa
if __name__ == "__main__":
#almacenamos el número de filas enviado como argumento por consola
rows = int(sys.argv[1]) if len(sys.argv) > 1 else int(0)
#mostramos el triángulo con el número de filas enviado.
print triangle_pascal(rows)