要检查回文是否

时间:2017-12-21 05:41:51

标签: python string python-3.x palindrome

在编译此代码时,它将None显示为输出

list = ["malayalam"]
reverse_list = list.reverse()
print(reverse_list)
while list == reverse_list:
    print('the answer is palindrome')

4 个答案:

答案 0 :(得分:1)

reverse()会改变原始列表,但不会返回新列表。 所以reverse_list = list.reverse()使reverse_list无。

这是您可能想要查看的答案 How to check for palindrome using Python logic

答案 1 :(得分:1)

你在python中使用了错误的反向功能试试这个

def is_palindrome1(st):
    ln = len(st)
    for i in range(ln//2):
        if st[i] != st[ln - 1 - i]:
            return False
    return True

def is_palindrome2(st):
    lst=list("malayalam")
    reversed_list=list(reversed(lst))
    return lst == reversed_list

def is_palindrome3(st):
    p1 = st[:len(st)//2]
    p2 = st[(len(st)+1)//2:]
    return p1 == p2

lst = "malayalam"

if is_palindrome1(lst):
    print('the answer is palindrome')
else:
    print('not palindrome')

答案 2 :(得分:0)

而是反转字符串本身

使用以下

>>> a = "Malayalam"
>>> rev = a[::-1]
>>> if a == rev:
>>>   print("palindrome")
>>> else:
>>>   print("Not a palindrome")

答案 3 :(得分:0)

为什么说没有?

这是一个例子,

>>> mylist = [1, 2, 3, 4, 5]
>>> mylist
[1, 2, 3, 4, 5]

>>> mylist.reverse()
None

>>> mylist
[5, 4, 3, 2, 1]

如您所见,调用mylist.reverse()返回None,但修改了原始列表对象。这个实现是由Python标准库的开发人员故意选择的:

  

reverse()方法在反转大序列时修改了空间经济性的顺序。为了提醒用户它是由副作用操作,它不会返回相反的顺序。 Source

所以在你的情况下它应该打印,并且因为 list == reverse_list 被评估为 false ,除了之前的任何内容都将打印。为什么在前面解释过。

希望你想检查一个单词是不是 ,如果是这样你就不需要列表了。下面的解决方案使用一些内置函数来实现这一目标。

word = "malayalam"
rev = ''.join(reversed(word))

if (word == rev):
    print('the answer is palindrome')
else:
    print('the answer is not a palindrome')

See this working example