在python中使用for循环返回回文结果

时间:2013-12-15 12:17:25

标签: python-2.7

我正在使用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()

2 个答案:

答案 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