2013-12-15 2 views
0

Я выполняю назначение проверки палиндрома в Python. Я должен использовать for-loop для проверки, является ли это палиндром или нет.return result of palindrome check with for-loop in python

Я думаю, что я нахожусь на правильном пути, но у меня возникают проблемы с возвратом результата цикла. При запуске программы он всегда возвращает True, даже если это не палиндром. Мне действительно нужна помощь, чтобы проверить, правильно ли я сделал for-loop и как вернуть правильный результат. Моя программа, как она теперь выглядит следующим образом:

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' 

основной()

+0

'return True' /' return False' –

+0

где я могу это обозначить? – user3104317

ответ

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).

+0

Спасибо большое! Я попробую это! – user3104317

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