单字回文检查(真或假)

时间:2012-03-31 02:41:34

标签: python

现在,我所拥有的是一个代码,我可以测试一个单词是否是Palindrome。我必须输入这个词,它会告诉我它是Palindrome(True)还是不是(False)

我需要创建一个要求单个单词的单词,然后根据键入的单词提供True of False。这就是我到目前为止所拥有的。

我真的不知道如何做到这一点,任何帮助将不胜感激。

def isPalindrome(s):
   if len(s) <= 1:
       return True
   else:
       if s[0] != s[len(s)-1]:
           return False
       else:
           return isPalindrome(s[1:len(s)-1])
print(isPalindrome("poop"))

10 个答案:

答案 0 :(得分:19)

只需创建一个反向字符串并检查两者是否相等。

def isPalindrome(s):
    return s == s[::-1]

print isPalindrome('poop')

答案 1 :(得分:2)

也使用反向字符串,但也可以在线使用(即不需要函数)。

def is_palindrome(word):
    return word == ''.join(reversed(word))

print is_palindrome('hello') #False
print is_palindrome('racecar') #True

答案 2 :(得分:2)

如果您正在询问如何让Python接受用户输入,那么您可以使用几种选项。一种选择是使脚本从命令行运行并使用命令行参数,另一种选择是使用raw_input函数。两者都在以下代码中实现。

import sys

def isPalindrome(word):
    ...

if __name__ == '__main__':
    if len(sys.argv) > 1:
        inp = sys.argv[1]
    else:
        inp = raw_input("Type a word: ") # Which you might want to strip for white space
    if isPalindrome(inp):
        print inp,"is a palindrome"
    else:
        print inp,"is not a palindrome"

其他几个人已经建议使用isPalindrome的替代实现可能更好,但是如果你这样做是作为一个赋值并且应该使用递归,那么继续使用你的。此外,raw_input函数可以在脚本中方便的任何地方调用,并且在从命令行调用时不必使用。

答案 3 :(得分:2)

您可以尝试此功能:

def is_palindrome(text):
    return text[:len(text)//2] == text[:(len(text)-1)//2:-1]

以下是参考的示例用法:

>>> is_palindrome('')
True
>>> is_palindrome('a')
True
>>> is_palindrome('b')
True
>>> is_palindrome('aa')
True
>>> is_palindrome('ab')
False
>>> is_palindrome('ba')
False
>>> is_palindrome('bb')
True
>>> is_palindrome('aaa')
True
>>> is_palindrome('aab')
False
>>> is_palindrome('aba')
True

答案 4 :(得分:1)

这是我的:

def isPalindrome(word):
    word=str(word)
    a=word[::-1]
    if a!=word:
        return False
    elif word=='':
        return False
    else: return True

答案 5 :(得分:1)

使用字符串下标

def is_palindrome(string):
    return all(char == string[-i - 1] for i, char in enumerate(string))

使用列表反转

def is_palindrome(string):
    to_list = list(string)

    # reverse to_list now
    to_list.reverse()

    # our reversed list should be equal string as a list
    # if string is a palindrome
    return to_list == list(string)

答案 6 :(得分:0)

这是我的:

  def palindrome_checker(word):
      return True if len(word) < 2 else (word[0] == word[-1]) and palindrome_checker(word[1:-1])

答案 7 :(得分:0)

这应该有效。

return (s[:1+len(s)//2]==s[len(s)//2:][::-1])

答案 8 :(得分:0)

对于从testdome.com进行回文测试的人来说,考虑到肠衣,这是我的解决方案:

def is_palindrome(word):

wordoriginal = []
wordreversed = []

for i in reversed(word):
    i = i.lower()
    wordreversed.append(i)

for i in word:
    i = i.lower()
    wordoriginal.append(i)

return wordoriginal == wordreversed

答案 9 :(得分:-1)

这就是我提出的,希望它适合你:

def palindrome_(word):
    word = input("enter your word Here ")
    return word == word[::-1]

print palindrome_("word")