我正在使用Python进行回文检查。我必须使用for循环来检查它是否是回文。
我认为我已走上正轨,但我无法返回循环结果。在运行程序时,它总是返回True,即使它不是回文。我真的需要帮助,看看我是否正确完成了for循环以及如何返回正确的结果。 我的程序现在看起来像这样:
def main ():
showResult(testPalindrome(newText()))
def newText():
word = raw_input ('Hi, insert a word:')
clean = (',','!','.')
for i in clean:
cleanedText = word.replace(i, "").lower()
return cleanedText
def testPalindrome(cleanedText):
testword = cleanedText
list = [testword]
for i in range(len(list)/2):
if list[i] != list [-i-1]:
continue
else:
break
def showResult(palindrome):
if True:
print 'Yes, it is a palindrome '
else:
print 'No, it is not palindrome'
main()
答案 0 :(得分:1)
你永远不会return
来自test_palindrome
的任何内容。请记住,如果任何字母无法匹配,它不是回文,但所有必须匹配才能通过,所以:
for i in range(len(list)/2):
if list[i] != list [-i-1]:
continue
else:
break
应该成为
for i in range(len(list)/2):
if list[i] != list [-i-1]:
return False
return True
此外,为了使您的代码更加健壮,您可以将clean
替换为string.punctuation
(记住import string
)。
答案 1 :(得分:0)
对于测试,字符串是回文,将其与反向进行比较。
In [1]: p = 'this is a test'
In [2]: p[::-1]
Out[2]: 'tset a si siht'
In [3]: p == p[::-1]
Out[3]: False
In [4]: q = 'racecar'
In [5]: q == q[::-1]
Out[5]: True