2016-04-16 22 views
1

文字列内の単語を逆にする関数を書くことを意図しています。したがって、入力が「私は学生です」と出力が「学生は私」となるはずです文字列の開始と終了の検索方法

次のコードをPythonで使用すると、最初に文字列内のすべての文字を逆順にして、単語を逆にして、それらを "最終文"変数に出力します。

私がチェックしている状態はちょうどスペースであるため、最初の単語は印刷されません。つまり、入力が "私は学生です"と私のコードは動作します( "I"の前のスペースに気づく)...ただし、入力は、出力は単に「学生です」

である「私は学生です」されている場合、私はそれが最初の単語に

def reverse(sentence): 
    count = 0 
    new_sentence = '' 
    final_sentence = '' 
    counter = 0 
    word = '' 

    for char in sentence[::-1]: 
     new_sentence = new_sentence + char 


    for char in new_sentence: 
     if char != " ": 
      count = count + 1 
      continue 
     else: 
      for i in new_sentence[count-1::-1]: 

       if i != " ":  
        word = word + i 
       else: 
        break 

     count = count + 1 
     final_sentence = final_sentence + " " + word 
     word = '' 
    print final_sentence 

reverse("I am a student") 
を逃さないように私は私のIFステートメントを変更する方法を知っておく必要があります

答えて

2

なぜこのような複雑なループを実行しているのか分かりません。あなただけの、文を分割逆転し、再度参加することができます。

>>> ' '.join('I am a student'.split(' ')[::-1]) 
'student a am I' 

機能にそのを翻訳する:

def reverse_sentence(sentence): 
    return ' '.join(sentence.split(' ')[::-1]) 
+2

これは正しい方法です。しかし、 "この方法のエラーはどこにあるのですか"は有効な質問のように思えますが、あなたはそれに対処していません。何らかの理由で(教育?)、OPは、彼の方法は完全な答えでは正しく動作しませんなぜあなたはスプリットとして単一引用符を持っている必要はありません –

+0

あなたが取り組むべきように思えるので、彼らは、独自のソリューションですアンロールされます引数。 split()のデフォルト引数は1つの空白です。また、Pythonには既に組み込みのreverseed()関数が付属しています。だから、解決策はように簡単かもしれない:en_Knightが指摘したように、「(.splitは())」私は学生です ' –

+0

が、これはクラスのために実際にある 'リターン「(逆転).join」とこれを実行しようとしていますジョイント、リバース、その他の組み込みのPython関数を使用する必要はありません。ありがとう! – codeNoob

2

あなたは、あなたのコード内でいくつかの奇妙なことをやっています。たとえば:あなたは連結を通じて構築している

new_sentence = '' 
for char in sentence[::-1]: 
    new_sentence = new_sentence + char 

stringはすでにsentence[::-1]中に存在しています。あなたはちょうどnew_sentence = sentence[::-1]をやったことができます。

あなたはenumerate()を使用して文の前にそのポイントにスペースがあるかどうかをチェックすることによって、最初の単語を調べることができます

for idx,char in enumerate(new_sentence): 
    if char != " " or ' ' not in new_sentence[:idx]: 

はしかし、あなたの実際の目標を達成する最も簡単な方法は、split()であります文章を空白で自動的に分割します。反転したら、join()を使用して戻します。

def reverse(sentence): 
    return ' '.join(sentence.split()[::-1]) 
関連する問題