単語が回文であるかどうかを分析するコードを作成しようとしています。ところで、パリンドロームとは、前後に同じように読まれる単語です。例は「マダム」または「正午」
ここに試してみてください:
x = raw_input("please enter a word:\n")
L = len(x)
# this part returns the first letter of the word
def first(word):
return word[0]
# this part returns the last letter of the word
def last(word):
return word[-1]
def middle(word):
return word[1:-1]
def is_palindrome(word):
if L <= 2:
print 'enter a word with at least three letters'
elif first(word) != last(word):
print 'This word is not a palindrome'
else:
word = middle(word)
is_palindrome(word)
is_palindrome(x)
しかし、実行すると、
IndexError: string index out of range
...line 7, in first return word[0]
「is_palindrome」の最初のブランチは完全に機能します。つまり、単語が回文でない場合、エラーは発生しません。同様に「noopn」はエラーなしで実行されますが、エラーは 2 番目のブランチにあります
このコードで何度も遊んできましたが、「反復部分」がわかりません。答えはありますが、まだ見たくありません。私は 2 つのことを理解する必要があります: 1. 関数 is_palindrome の反復を正しく機能させる方法 2. 最後にプログラムを終了する方法。
まだ解決策を提供せずに、これらの質問に答える方法を教えていただけますか?
最後に、printステートメントをどこに置くべきですか: print 'This word is a palindrome'
ありがとうございました