Python中列表的回文检查

2024-04-18 20:22:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解python中列表的基础知识。我已经为python中的回文字符串检查编写了一个示例代码。我试图理解为什么它不起作用。我正在比较字符串参数和列表参数

有人能解释一下为什么下面的代码给出了错误的输出吗

class Palindrome:

    @staticmethod
     def is_palindrome(word):
         i = 0
         l = len(word)
         rev = []
         print(l)
         while l > 0:
             rev.insert(i, word[l - 1])
             i = i + 1
             l = l - 1

         if rev == word:
             print(test)
             print(word)
             return True
         else:
             print(rev)
             print(word)
             return False

print(Palindrome.is_palindrome('tatat'))

上述代码的输出为

$python main.py
5
['t', 'a', 't', 'a', 't']
tatat
False

还有一件事是这样的:为什么它要打印数组值,比如['t','a','t','a','t']而不是tatat 我也尝试过append()方法,但没有用,结果是一样的


Tags: 字符串代码false示例列表参数returnis
3条回答

您正在比较string(您的单词输入)和list个字符。在与原始string进行比较之前,您必须将字符^{}转换为string

在列表中插入字符,其最终结果仍然是列表,而不是字符串;这就是为什么回文测试返回False,因为您比较的是['t', 'a', 't', 'a', 't'] == 'tatat'

如果要正确执行此操作,需要将rev声明为空字符串并附加到它

 rev = ''
 for i in range(len(word)):
     rev += word[len(word) - i]

我不知道为什么这里的人会做出反应。如果有人来这里寻求帮助,我们应该帮助他(如果可以的话),或者至少不要劝阻他。我的问题怎么了?如果有任何错误,让我知道一个顺利的方式,而不是攻击完全。我们在这里学习,共同成长。 无论如何,下面是我在上面发布的问题的解决方案:

class Palindrome:

@staticmethod
def is_palindrome(word):
    i= 0
    l= len(word)
    rev = ""
    print(l)
    while(l>0):
        rev += word[l - 1]
        l = l-1
        i =i+1
    if (rev == word):
        print(rev)
        print(word)
        return True
    else:
        print(rev)
        print(word)
        return False
print(Palindrome.is_palindrome('tatat'))

相关问题 更多 >