问题描述
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!")