我只是编写一个程序来检查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)
答案 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)
您想知道为什么您的程序无法正常运行。有两个原因:
" ".join(rev_palindrome)
表达式将返回一个字符串,其中包含由" "
(空格)分隔的rev_palindrome中的每个条目。因此,问题在于您不希望在这两者之间存在这些" "
,并且您不希望将此字符串保存在任何位置。 (此外,每次循环时都会调用join方法,这是不需要的。)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]
是否更容易。)