Skip to Main Content
Blog

Print all Palindrome Numbers in Python

Print all Palindrome Numbers in Python

Enter lower bound: 100
Enter upper bound: 199
101, 111, 121, 131, 141, 151, 161, 171, 181, 191,
from math import copysign


def main():
	"""
	Prints all the Palindrome numbers within a given range.
	"""

	BASE = 10

	a = int(input("Enter lower bound: "))
	b = int(input("Enter upper bound: "))

	for i in range(a, b + 1):
		if is_palindrome(i, BASE):
			print(i, end=", ")
	print()


def is_palindrome(number: int, base: int):
	"""
	Checks if a number is a Palindrome number or not.
	"""

	reversed = reverse_number(number, base)
	return reversed == number


def reverse_number(number: int, base: int):
	"""
	Returns the reverse of a number.
	"""

	reversed = 0
	n = abs(number)
	while n != 0:
		unit_digit = n % base
		reversed = reversed * base + unit_digit
		n //= base

	return int(copysign(reversed, number))


if __name__ == "__main__":
	main()