在编译此代码时,它将None
显示为输出
list = ["malayalam"]
reverse_list = list.reverse()
print(reverse_list)
while list == reverse_list:
print('the answer is palindrome')
reverse()改变原始列表并且不返回新列表。所以reverse_list = list.reverse()使reverse_list无。
这是一个你可能想要查看How to check for palindrome using Python logic的答案
你在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')
而是反转字符串本身
使用以下内容
>>> a = "Malayalam"
>>> rev = a[::-1]
>>> if a == rev:
>>> print("palindrome")
>>> else:
>>> print("Not a palindrome")
为什么说没有?
这是一个例子,
>>> 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')