Python中的回文函数问题

时间:2019-05-19 19:52:45

标签: python

我得到的输出是:not a palindrome的回文,代码如下:

我正在使用Jupyter笔记本运行此报告。

#def palindrome(num):
num=int(input("Please Enter a Number-"))
a=num
rev=""
while num>0:
    d=num%10
    num=num//10
   # print(d)
    rev=rev+str(d)
   # print(rev)
if rev==a:
    print(a,"Is a Palindrome")
else:
    print(a,"Is not a Palindrome")

我的输入:242
输出:242 Is not a Palindrome

2 个答案:

答案 0 :(得分:2)

在Python中,字符串和数字不同。比较它们不会将它们变成另一种。

$ python
Python 2.7.16 (default, Apr  1 2019, 14:50:41) 
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.46.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 242 == str(242)
False

rev是一个字符串,因为它是由将整数转换为字符串后创建的。

rev=rev+str(d)

a是整数,因为它是一个变成整数的字符串。

num=int(input("Please Enter a Number-"))
a=num

rev == a始终为假,因为它们是不同的类型。

您需要比较rev == str(a)int(rev) == a

答案 1 :(得分:1)

我会相当多地重组您的代码。回文(Palindrome)更容易以字符串而不是数字来推理(在我看来)。

以下代码使用了一个有趣的python技巧来反转字符串并将其与自身进行比较。

num = "242"
rev = num[::-1]
if rev == num:
    print(num,"Is a Palindrome")
else:
    print(num,"Is not a Palindrome")

由于回文与向前相同,因此只需检查字符串表示形式在反向和正常情况下是否相等就足以确定它是否是回文。请参阅here,以获取对[::-1]语法的解释,该语法可以反转字符串。