w3resource

Python: Closest Palindrome number of a given integer

Python Basic - 1: Exercise-139 with Solution

Write a Python program to find the closest palindrome number to a given integer. If there are two palindrome numbers in absolute distance return the smaller number.

Sample Solution-1:

Python Code:

# Define a function 'test' that finds the closest palindrome number to the given integer 'n'.
def test(n):
    # Initialize two variables 'x' and 'y' to the original value of 'n'.
    x = n
    y = n
    
    # Loop indefinitely until a palindrome is found.
    while True:
        # Check if the string representation of 'x' is a palindrome.
        if str(x) == str(x)[::-1]:
            # If 'x' is a palindrome, return it as the closest palindrome.
            return x
        
        # Decrement 'x' by 1 for the next iteration.
        x -= 1
        
        # Check if the string representation of 'y' is a palindrome.
        if str(y) == str(y)[::-1]:
            # If 'y' is a palindrome, return it as the closest palindrome.
            return y
        
        # Increment 'y' by 1 for the next iteration.
        y += 1

# Test case 1
n1 = 120
print("Original number: ", n1)
print("Closest Palindrome number of the said number: ", test(n1))

# Test case 2
n2 = 321
print("\nOriginal number: ", n2)
print("Closest Palindrome number of the said number: ", test(n2))

# Test case 3
n3 = 43
print("\nOriginal number: ", n3)
print("Closest Palindrome number of the said number: ", test(n3))

# Test case 4
n4 = 1234
print("\nOriginal number: ", n4)
print("Closest Palindrome number of the said number: ", test(n4))

Sample Output:

Original number:  120
Closest Palindrome number of the said number:  121
Original number:  321
Closest Palindrome number of the said number:  323
Original number:  43
Closest Palindrome number of the said number:  44
Original number:  1234
Closest Palindrome number of the said number:  1221

Explanation:

Here is a breakdown of the above Python code:

  • test Function:
    • The "test()" function takes an integer 'n' as input.
    • It initializes two variables 'x' and 'y' to the original value of 'n'.
    • The function then enters an infinite loop, decrementing 'x' and incrementing 'y' in each iteration.
    • If a palindrome is found during this process, it is returned as the closest palindrome.

Flowchart:

Flowchart: Python - Closest Palindrome number of a given integer.

Sample Solution-2:

Python Code:

# Define a function 'test' that finds the closest palindrome number to the given integer 'n'.
def test(n):
    # Initialize a variable 'result' to 0.
    result = 0
    
    # Loop until a palindrome is found.
    while n:
        # Check if the string representation of 'n - result' is a palindrome.
        if str(n - result) == str(n - result)[::-1]:
            # If true, return 'n - result' as the closest palindrome.
            return n - result
        # Check if the string representation of 'n + result' is a palindrome.
        elif str(n + result) == str(n + result)[::-1]:
            # If true, return 'n + result' as the closest palindrome.
            return n + result
        
        # Increment 'result' for the next iteration.
        result += 1

# Test case 1
n1 = 120
print("Original number: ", n1)
print("Closest Palindrome number of the said number: ", test(n1))

# Test case 2
n2 = 321
print("\nOriginal number: ", n2)
print("Closest Palindrome number of the said number: ", test(n2))

# Test case 3
n3 = 43
print("\nOriginal number: ", n3)
print("Closest Palindrome number of the said number: ", test(n3))

# Test case 4
n4 = 1234
print("\nOriginal number: ", n4)
print("Closest Palindrome number of the said number: ", test(n4))

Sample Output:

Original number:  120
Closest Palindrome number of the said number:  121
Original number:  321
Closest Palindrome number of the said number:  323
Original number:  43
Closest Palindrome number of the said number:  44
Original number:  1234
Closest Palindrome number of the said number:  1221

Explanation:

Here is a breakdown of the above Python code:

  • test Function:
    • The "test()" function takes an integer 'n' as input.
    • It initializes a variable result to 0.
    • The function enters a loop until a palindrome is found:
      • It checks if n - result or n + result is a palindrome.
      • If true, it returns the corresponding value as the closest palindrome.

Flowchart:

Flowchart: Python - Closest Palindrome number of a given integer.

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Python program to reverse the binary representation of an given integer and convert the reversed binary number into an integer.
Next: Write a Python program to convert all items in a given list to float values.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.