2016-06-19 8 views
1

Pythonでpalindromeをチェックするためのプログラムを書いています。なぜそれが動作していないのかわかりません。どんな助けでも大歓迎です。Pythonのpalindromeコードが動作しない

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'の使い方がわかります)。これは、単語と正確に何が比較されるかを教えてくれます。各反復でどのように見えるかを確認して、 'rev_palindrome'を期待どおりに構築していることを確認することもできます。代わりに、スタックオーバーフローにコードの一部をコピーして貼り付けることを選択しました。なぜ私はそれが動作していないのかわかりません。あなたは本当にあなた自身でそれを解決するのに多くの努力を払っていなかったと思いますか? –

答えて

1

代わりに、このようにそれを試してみてください。

"".join(rev_palindrome) 
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) 

代わりを使用しています

問題は、あなたがスペースを挿入していることです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つの理由があります。そのため、これらの文字を間に入れたくないということと、この文字列をどこにも保存しないことが問題です。 (ループするたびに結合メソッドを呼び出す必要はありません)
  2. 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]かどうかを確認することが容易であるが示唆された。)

関連する問題