#!/usr/bin/env python # -*- coding: utf-8 -*- class Transform(object): """Class to transform a given integer into a palindrome""" def __init__(self): super(Transform, self).__init__() def palindrome(self, int): ''' Kind of the main function. Checks if input int is already a palindrome and trys calculation one if input integer is not already a palindrome. ''' self.input_int = int if self.__is_palindrome(self.input_int): print('Integer {} is a palindrome'.format(self.input_int)) return self.input_int else: print('Integer {} is not a palindrome'.format(self.input_int)) print('Calculating the palindrome for input {}'.format(self.input_int)) palindrome = self.__calculate_palindrome() return palindrome # The following methods are private. Signaled by the leading __ def __is_palindrome(self, int_to_check): reversed = self.__reverese_int(int_to_check) if self.input_int == reversed: return True else: return False def __reverese_int(self, int_to_reverse): reversed = 0 int_to_check = int_to_reverse while int_to_check > 0: reminder = int_to_check % 10 reversed = (reversed * 10) + reminder int_to_check = int_to_check // 10 return reversed def __calculate_palindrome(self): reversed = self.__reverese_int(self.input_int) self.input_int = self.input_int + reversed print('Possible palindrome is {}'.format(self.input_int)) if self.__is_palindrome(self.input_int) is True: return self.input_int if self.__is_palindrome(self.input_int) is False: return self.__try_again() def __try_again(self): while self.input_int <= 1000000000: self.__calculate_palindrome() if self.input_int >= 1000000000: print('Palindrome to be calculated is to big. Abort!') return -1