6

我刚刚开始使用python,我正在尝试将用户输入的字符串测试为回文。我的代码是:

x=input('Please insert a word')
y=reversed(x)
if x==y:
    print('Is a palindrome')
else:
    print('Is not a palindrome')

这总是返回 false,因为 y 变成了类似的东西,<reversed object at 0x00E16EF0>而不是反转的字符串。我无知什么?您将如何编写此问题的代码?

4

7 回答 7

18

试试y = x[::-1]。这使用拼接来获得字符串的反转。

reversed(x)返回一个迭代器,用于以相反的顺序循环字符串中的字符,而不是可以直接比较的字符串x

于 2011-03-05T08:09:43.740 回答
8

reversed返回一个迭代器,您可以使用以下方法将其制成字符串join

y = ''.join(reversed(x))
于 2011-03-05T08:12:17.453 回答
2

供将来参考,来自上述答案的 lambda 用于快速回文检查:

isPali = lambda num: str(num) == str(num)[::-1]

示例使用:

isPali(9009) #returns True
于 2013-04-30T11:42:48.307 回答
0

试试这个代码。

def pal(name):
        sto_1 = []
        for i in name:
                sto_1.append(i)

        sto_2 = []
        for i in sto_1[::-1]:
                sto_2.append(i)

        for i in range(len(name)):
                if sto_1[i] == sto_2[i]:
                        return "".join(sto_1), "".join(sto_2)
                else:
                        return "no luck"

name = raw_input("Enter the word :")
print pal(name)
于 2015-01-24T07:48:43.437 回答
0

试试这个代码:

def palindrome(string):
    i = 0 
    while i < len(string):
        if string[i] != string[(len(string) - 1) - i]:
            return False
        i += 1
    return True

打印回文(“汉娜”)

于 2016-12-19T21:25:21.627 回答
0
list(reverse( mystring )) == list( mystring )

或者在数字的情况下

list(reverse( str(mystring) )) == list( str(mystring) )
于 2016-10-11T00:09:47.150 回答
0

试试这个代码来找出原始和反向是否相同:-

if a == a[::-1]: 

#这将反转给定的字符串,最终会让你知道给定的字符串是否是回文。

于 2020-07-13T21:56:23.183 回答