反转一个整数并查找它是否是回文Python

时间:2018-02-26 04:09:41

标签: python-3.x

我正在尝试编写一个程序来查找是否是回文。我有这个代码,无法弄清楚为什么它不起作用的生活。它运行但只返回该数字不是回文,无论它是否是

def reverse(number):
    reverse = 0    
    while number > 0:
        endDigit = number % 10
        reverse = (reverse*10) + endDigit
        number = number // 10

def isPalindrome(number):
    reverse(number)
    original = number    
    if original == reverse:
        print("yep, it's a Palindrome")
    else:
        print("sorry man, not a Palindrome...")

def main():
    number = eval(input("Please enter a number and I'll check if it's a Palindrome: "))
    isPalindrome(number)
main()

1 个答案:

答案 0 :(得分:0)

或者,您是否考虑将整数表示为字符串并将其与其反转形式进行比较?

In [1]: num1 = 907709

In [2]: num2 = 90789

In [3]: str(num1) == str(num1)[::-1]
Out[3]: True

In [4]: str(num2) == str(num2)[::-1]
Out[4]: False

解决您当前的代码:您需要返回来自reverse()的内容,并内容分配给isPalindrome()中的返回值。

def reverse(number):
    rev = 0    
    while number > 0:
        endDigit = number % 10
        rev = (rev*10) + endDigit
        number = number // 10
    return rev

def isPalindrome(number):
    rev = reverse(number) 
    if number == rev:
        print("yep, it's a Palindrome")
    else:
        print("sorry man, not a Palindrome...")

那就是说reverse()仍然会在这里失败。考虑:

In [28]: reverse(10750)
Out[28]: 5701

如果您不认为这是有效的,则应使用整数(str(number))的字符串形式,在反转数字时将保留尾随零。使用[::-1]是一种索引来反转字符串。