2016-06-19 54 views
1

我只是寫了一個程序來檢查python中的迴文。我不知道它爲什麼不起作用。任何幫助將不勝感激。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) 
+1

可以輕鬆地檢查循環後的'rev_palindrome'中有什麼是打印的(我可以看到你知道如何使用'print')。它可以告訴你與「word」相比究竟是什麼。您也可以在每次迭代時檢查它的外觀,看看它是否以您期望的方式構建了「rev_palindrome」。相反,您選擇複製粘貼一段代碼到Stack Overflow並告訴我們_我不知道它爲什麼不工作。我想你自己並沒有花太多精力來解決它,對嗎? –

回答

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

問題是你正在插入spac當構建rev_palindrome時,每個字符之間都有一個字符。但是您已經知道如何翻轉word中的字符,即它只是word[::-1]。所以直接比較它:

def palindrome(word): 
    if word == word[::-1]: 
     print "It is a palindrome" 
    else: 
     print "It is not a palindrome" 
1

你想知道爲什麼你的程序不按預期工作。原因有二:

  1. " ".join(rev_palindrome)表達式將返回包含rev_palindrome每個條目由" "(空格)分隔的字符串。因此,問題是你不希望在這兩個之間有這些" ",並且你不保存這個字符串。 (此外,每次循環時都會調用連接方法,這是不需要的。)
  2. 第二個問題是實際稱爲迴文方法的部分: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]