我正在尝试编写一个程序来查找是否是回文。我有这个代码,无法弄清楚为什么它不起作用的生活。它运行但只返回该数字不是回文,无论它是否是
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()
答案 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]
是一种索引来反转字符串。