Skip to Main Content
Blog

Print Pascal Triangle in Python

Print Pascal Triangle in Python

def main():
	"""
	Prints pyramid patterns.
	"""

	num = int(input("Enter height: "))
	sep = "=" * (num * 4 - 2)

	print(sep)
	t_skewed(num)
	print(sep)
	b_skewed(num)
	print(sep)
	r_skewed(num)
	print(sep)
	l_skewed(num)
	print(sep)

	# Works perfectly when num <= 9.


def t_skewed(n: int):
	"""
	      1
	    1 2 1
	  1 2 3 2 1
	1 2 3 4 3 2 1
	"""

	for r in range(1, n + 1):
		# Print leading spaces
		for _ in range(n - r, 0, -1):
			print("  ", end="")
		# Print increasing numbers
		for c in range(1, r + 1):
			print(f"{c} ", end="")
		# Print decreasing numbers
		for c in range(r - 1, 0, -1):
			print(f"{c} ", end="")
		print()


def b_skewed(n: int):
	"""
	1 2 3 4 3 2 1
	  1 2 3 2 1
	    1 2 1
	      1
	"""

	for r in range(n, 0, -1):
		# Print leading spaces
		for _ in range(n - r, 0, -1):
			print("  ", end="")
		# Print increasing numbers
		for c in range(1, r + 1):
			print(f"{c} ", end="")
		# Print decreasing numbers
		for c in range(r - 1, 0, -1):
			print(f"{c} ", end="")
		print()


def r_skewed(n: int):
	"""
	1
	1 2
	1 2 3
	1 2 3 4
	1 2 3
	1 2
	1
	"""

	# Upper part of the pattern
	for r in range(1, n + 1):
		for c in range(1, r + 1):
			print(f"{c} ", end="")
		print()
	# Lower part of the pattern
	for r in range(n - 1, 0, -1):
		for c in range(1, r + 1):
			print(f"{c} ", end="")
		print()


def l_skewed(n: int):
	"""
	      1
	    1 2
	  1 2 3
	1 2 3 4
	  1 2 3
	    1 2
	      1
	"""

	# Upper part of the pattern
	for r in range(1, n + 1):
		# Print leading spaces
		for _ in range(n - r, 0, -1):
			print("  ", end="")
		# Print numbers
		for c in range(1, r + 1):
			print(f"{c} ", end="")
		print()
	# Lower part of the pattern
	for r in range(n - 1, 0, -1):
		# Print leading spaces
		for _ in range(n - r, 0, -1):
			print("  ", end="")
		# Print numbers
		for c in range(1, r + 1):
			print(f"{c} ", end="")
		print()


if __name__ == "__main__":
	main()