Python回文代码不起作用

时间:2016-06-19 11:28:12

标签: python

我只是编写一个程序来检查python中的回文。我不知道为什么它不起作用。任何帮助将不胜感激。

def palindrome(word):
    rev_palindrome = []
    for i in word[::-1]:
        rev_palindrome.append(i)
        " ".join(rev_palindrome)
    if word == rev_palindrome:
        print "It is a palindrome"
    else:
        print "It is not a palindrome"
palindrome(mom)

3 个答案:

答案 0 :(得分:1)

请尝试这种方式:

def palindrome(word):
    if word == word[::-1]:
        print "It is a palindrome"
    else:
        print "It is not a palindrome"

palindrome('mom')
palindrome('tree')

It is a palindrome
It is not a palindrome

除了一些不必要的并发症之外,问题的核心是使用

" ".join(rev_palindrome)

而不是:

"".join(rev_palindrome)

答案 1 :(得分:1)

问题是你在构造rev_palindrome时在每个角色之间插入空格。但是你已经知道如何反转word中的字符,即它只是word[::-1]。所以直接比较一下:

def palindrome(word):
    if word == word[::-1]:
        print "It is a palindrome"
    else:
        print "It is not a palindrome"

答案 2 :(得分:1)

您想知道为什么您的程序无法正常运行。有两个原因:

  1. " ".join(rev_palindrome)表达式将返回一个字符串,其中包含由" "(空格)分隔的rev_palindrome中的每个条目。因此,问题在于您不希望在这两者之间存在这些" ",并且您不希望将此字符串保存在任何位置。 (此外,每次循环时都会调用join方法,这是不需要的。)
  2. 第二个问题是您实际调用回文方法的部分:palindrome(mom)。你忘了引用"mom"
  3. 因此,纠正了一个有希望的解决方案的工作版本将是:

        def palindrome(word):
            rev_palindrome = []
            for i in word[::-1]:
                rev_palindrome.append(i)
    
            rev_palindrome = "".join(rev_palindrome)
    
            if word == rev_palindrome:
                print "It is a palindrome"
            else:
                print "It is not a palindrome"
    
        palindrome("mom")
    

    (但与其他已经建议的海报一样,只需检查word == word[::-1]是否更容易。)