回文是单词,短语,数字或其他单位序列,可以在任一方向上以相同的方式读取。编写一个函数,确定给定的单词或数字是否为回文。
实施例
>>> 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,所以我应该在我的代码中更改以使其正确。在其他条件下,代码工作正常。
答案 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语句。