2016-11-06 8 views
-1
def get_middle_character(odd_string): 
    variable = len(odd_string) 
    x = str((variable/2)) 
    middle_character = odd_string.find(x) 
    middle_character2 = odd_string[middle_character] 
    return middle_character2 



def main(): 
    print('Enter a odd length string: ') 
    odd_string = input() 
    print('The middle character is', get_middle_character(odd_string)) 

main() 

特定の奇数長文字列に中間文字を印刷する方法を理解する必要があります。しかし、私はこのコードを実行すると、私は最後の文字を取得します。何が問題ですか?奇数長文字列の中文字を取得する

+2

あなたのコードは意味がありません。 'x'が何であるか知っていますか? 'str.find'とは何ですか?私はあなたがそれを一歩進めることをお勧めします。 [Python Tutor](http://pythontutor.com/visualize.html)。中間文字のインデックスを取得すると、かなり完了していることに注意してください。 – jonrsharpe

+0

文字列メソッドを誤って使用しているため、文字列メソッドのドキュメントを読む必要があります。 'odd_string.find(x)'は '変数/ 2'という数字の文字列表現を探しているので' -1'を返します。したがって、 '.find'は-1を返し、' odd_string [middle_character] 'は文字列の最後の文字を返します(Pythonの負のインデックス付けに従って)。 –

答えて

0

文字列のインデックスと文字列スライシングに基づいて文字にアクセスするだけで済みます。例えば:

>>> s = '1234567' 
>>> middle_index = len(s)/2 
>>> first_half, middle, second_half = s[:middle_index], s[middle_index], s[middle_index+1:] 
>>> first_half, middle, second_half 
('123', '4', '567') 

説明:

  • str[:n]:インデックス
  • str[n]番目n-1に0番目のインデックスから戻り列:までのn番目のインデックスから戻り値:n番目のインデックス
  • str[n:]に戻り値リストの末尾
1

あなたのコードが実際に何をしているのかをもっと慎重に考える必要があります。

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ここで質問をする前にコードをデバッグしてください。

0

は、以下のようにする必要があります:

def get_middle_character(odd_string): 
    variable = len(odd_string)/2 
    middle_character = odd_string[variable +1] 
    return middle_character 
関連する問題