2017-01-05 3 views
2

ありがとうございました。なぜ私のコードが間違っているのですか?Pythonで文を逆にするには

私はいくつかありますが、コードが機能していないことを理解したいので、私に解決策を教えてください。

私はそれがwhile x <= -len(split_result):"に起因すると思うが、私は論理が正しいと思う。私のコードで何が間違っていますか?

O_string = ("Me name is Mr_T") 
split_result = O_string.split() 
print(split_result) 

x=0 
list=[] 

while x <= -len(split_result): 
    list.append(split_result[x-1]) 
    x = x-1 

result=" ".join(list) 
print (result) 
+2

' '' Hello world'.split()(:: - 1)) ' –

+1

' x = 0'で初期化した後、 'x'が負の値以下であるかどうかをチェックしています。あなたの 'while'ループを決して入力しないでください – asongtoruin

答えて

1

は逆の機能を使用するだけでなく、str.joinを作ることができます

O_string = ("Me name is Mr_T") 
split_result = O_string.split() 
split_result.reverse() 
print " ".join(split_result) 
0

あなたは試すことができます:

>>> O_string = ("Me name is Mr_T") 
>>> O_list = O_string.split() 
>>> O_list.reverse() 
>>> " ".join(O_list) 
'Mr_T is name Me' 
5

あなたが[::-1]でリストを逆にすることができます:

print(' '.join(O_string.split()[::-1])) 

出力:

'Mr_T is name Me' 

ここで[::-1]は、ステップサイズがマイナス1で始まりから終わりまですべてをとることを意味します。あなたのアルゴリズムについて

>>> ' '.join(reversed(O_string.split())) 
'Mr_T is name Me' 

代わりに、組み込み関数reversedを使用することができます。私の意見では、常に負の指標で考えるのは難しいです。私はポジティブに行くことをお勧めします:

O_string = ("Me name is Mr_T") 
split_result = O_string.split() 

res = [] 
x = len(split_result) - 1 
while x >= 0: 
    res.append(split_result[x]) 
    x = x-1 

result=" ".join(res) 
print (result) 

出力:ここ

'Mr_T is name Me' 

x = len(split_result) - 1 

はあなたのリストの最後のインデックスを提供します。 0でインデックスを作成します。したがって、リストの長さから1を引く必要があります。

x = x-1 

を、あなたは負のインデックスを取得するとすぐに停止します:

あなたはでそれをカウントダウン

while x >= 0: 

ヒントは:変数名としてlistを使用しないでください。これはビルトインであり、独自のオブジェクトの名前付けには使用しない方がよいでしょう。そうした場合は、同じ名前空間内にもうlist()を簡単に使用することはできません。あなたが使用することができます

0

が文逆に反転:Pythonで

o_string = "Me name is Mr_T" 
words = sentence.split() 
o_string = " ".join(reversed(words)) 
print(o_string) 
1

を、list[::-1]はあなたのリストのすべての要素が逆インデックス位置に保存されているリストが表示されます。 ie)。reverseList1=list1[::-1]これを使用してください。

1

「自分のコードで何が問題になっていますか?」、のは、シェルで何が起こるかを見てみましょう:。

>>> O_string = ("Me name is Mr_T") 
split_result = O_string.split() 
print(split_result) 
['Me', 'name', 'is', 'Mr_T'] 
>>> x=0 
>>> len(split_result) 
4 
>>> -len(split_result) 
-4 
>>> x 
0 
>>> 0 <= 4 
True 
>>> 0 <= -4 
False 
>>> x <= -len(split_result) 
False 
>>> while False: print('this will not get printed') 

だから、あなたのwhileループの条件が真になることはありませんし、ループが発生することはありませんここではどのような作品の例です。

x = -1 
while x >= -len(split_result): 
    list.append(split_result[x]) 
+0

最初にx = 0と設定したとしましょう。 – Alexis

+0

@Alexisそれでは、' 'x> = -len(split_result)+ 1'と' split_result [ x-1] 'となる。 –

関連する問題