回文,没有字符串就不能返回False

时间:2015-07-28 05:38:51

标签: python python-2.7

回文是单词,短语,数字或其他单位序列,可以在任一方向上以相同的方式读取。编写一个函数,确定给定的单词或数字是否为回文。

实施例

>>> isPalindrome("")
False
>>> isPalindrome("Racecar")
True
>>> isPalindrome(121)
True
>>> isPalindrome("Never")
False
>>> isPalindrome("level")
True

我的代码

def isPalindrome(word):
        word = str(word)
        if word == ''.join(reversed(word)) :
            return True
        elif len(word)<1 or word[0] == '':
            return False
        else: 
            return False
    print isPalindrome('')
    print isPalindrome('abba')
    print isPalindrome('level')
    print isPalindrome(12321)

此代码返回的内容。

True
True
True
True

因为它应该为&gt;&gt;&gt;返回false isPalindrome(“”),但它返回True,所以我应该在我的代码中更改以使其正确。在其他条件下,代码工作正常。

3 个答案:

答案 0 :(得分:4)

def isPalindrome(word):
    word = str(word)
    if word and word == ''.join(reversed(word)):
        return True
    else:
        return False

仅当True为真且word为真时,才会返回word == ''.join(reversed(word))。仅当字符串非空时,该字符串才为真。这样就无需进行测试len(word)<1

顺便提一下,测试word[0] == ''可能无法达到您的预期:如果word为空,则word[0]会抛出IndexError

更简单

根据BrianO的建议:

def isPalindrome(word):
    word = str(word)
    return bool(word) and word == word[::-1]

答案 1 :(得分:2)

你必须首先检查这个单词是否为空:

String.valueOf(record.get("key"))

<强>输出:

def isPalindrome(word):
        word = str(word)
        if len(word)<1 or word[0] == '':
            return False
        if word == ''.join(reversed(word)) :
            return True


        return False

print isPalindrome('')
print isPalindrome('abba')
print isPalindrome('level')
print isPalindrome(12321)
print isPalindrome(1231)

这是因为如果给定的单词是空字符串

,您的第一个if情况将为真

即)

False
True
True
True
False

答案 2 :(得分:0)

你的第一个if语句导致空字符串返回true并退出函数。

您需要切换if和else if语句。