Python回文代码不工作

2024-04-24 22:52:53 发布

您现在位置: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)

Tags: in程序forifisdefnotrev
3条回答

试着这样做:

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. " ".join(rev_palindrome)表达式将返回一个字符串,其中包含revu回文中由" "(空格)分隔的每个条目。因此,问题是您不希望将这些" "放在中间,并且不希望将此字符串保存在任何位置。(此外,每次循环时都会调用join方法,这是不需要的。)
  2. 第二个问题是实际调用回文方法的部分:palindrome(mom)。你忘了引用"mom"。你知道吗

因此,您的解决方案的一个正确的工作版本是:

    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]是否更容易。)

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

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

相关问题 更多 >