あなたのコードが実際に何をしているのかをもっと慎重に考える必要があります。
def get_middle_character(odd_string):
は、我々はget_middle_character('hello')
を呼ぶとしましょう、そうodd_string
は'hello'
次のとおりです:のは一例でこれをやってみましょう
variable = len(odd_string) # variable = 5
すべては、これまでOKです。
x = str((variable/2)) # x = '2'
これは明らかに奇妙である最初の事はさ - なぜあなたは、文字列'2'
をしたいですか?それは中間文字のインデックスです、ちょうど整数が欲しいのですか?また、そこに括弧が1組だけ必要です。もう1組は冗長です。
middle_character = odd_string.find(x) # middle_character = -1
それがそこになかったので、明らかにあなたは、サブodd_string
で'2'
str.find
することはできません。 str.find
は部分文字列が見つからない場合は-1
を返します。代わりにstr.index
を使用する必要があります。サブ文字列を見つけることができない場合は、ValueError
という素晴らしいクリアが得られます。あなたは中央の文字ではなく、中央の文字の文字列化インデックスを探していた場合でもstr.find
ができない場合があり、サブストリングが現れる最初指標を与えるように、あなたがトラブルに巻き込まれるだろうと
注意あなたは後になっています('lolly'.find('l')
...)。 Pythonなど
middle_character2 = odd_string[middle_character] # middle_character2 = 'o'
は、シーケンスの終わりから負のインデックス作成を可能に-1
は、最後の文字のインデックスです。
return middle_character2 # return 'o'
あなたが実際にreturn odd_string[middle_character]
に単純化し、余分な割り当てを削除した可能性があり、あなたはまだ間違った答えを持っていただろうが、よりきれいなコードから(とひどい名前であるmiddle_character2
なし)。
ここで間違っていた箇所を確認できるようになりました。うまくいけば、修正するために何をすべきか分かります。次回は例えばPython Tutorここで質問をする前にコードをデバッグしてください。
あなたのコードは意味がありません。 'x'が何であるか知っていますか? 'str.find'とは何ですか?私はあなたがそれを一歩進めることをお勧めします。 [Python Tutor](http://pythontutor.com/visualize.html)。中間文字のインデックスを取得すると、かなり完了していることに注意してください。 – jonrsharpe
文字列メソッドを誤って使用しているため、文字列メソッドのドキュメントを読む必要があります。 'odd_string.find(x)'は '変数/ 2'という数字の文字列表現を探しているので' -1'を返します。したがって、 '.find'は-1を返し、' odd_string [middle_character] 'は文字列の最後の文字を返します(Pythonの負のインデックス付けに従って)。 –