读取> 1000的整数并检查它是否是回文数

问题描述

x = int(input("Enter a number:"))
temp = x
rev = 0
while(x > 1000):
    dig = x % 10
    rev = rev * 10 + dig
    x -=  dig
    if temp == rev:
        print("{} is a palindrome!".format(x))
else:
    print("{} isn't a palindrome!".format(x))

由于某种原因,它没有提供正确的输出。有什么问题吗?

解决方法

为什么不只是将其作为字符串?

x = str(input("Enter a number:"))

x_rev = x[::-1]

if x == x_rev:
    print(f"{x} is a palindrome!")
else:
    print(f"{x} isn't a palindrome!")
,
def is_palidrome(x: int):
    s = str(x)
    return s == s[::-1]

将是最简单的。但是如果您不允许使用字符串,那么

def digits(x: int):
    d = []
    while x > 0:
        d.append(x % 10)
        x //= 10
    return d


def is_palindrome(x: int):
    d = digits(x)
    return d == d[::-1]

,

您遇到的问题错了,您将if和else放在了错误的位置,您也不需要这样做(x> 1000),只是print语句中的f是一个F字符串,它更快而且更多。格式化的便捷方法。绝对是您的武器库中的东西

x = int(input("Enter a number:"))
temp = x
revNum = 0
while(x > 0):
    dig = x % 10
    revNum = revNum * 10 + dig
    x = x//10
if temp == revNum:
    print(f"{temp} is a palindrome!")
else:
    print(f"{temp} isn't a palindrome!")