2017-06-17 4 views
-1

split()の使い方は分かっていますが、ここでは少しのメモリが失われています。私はスペースが発生するたびにユーザーが入力した文を分割するFORループを使いたい。したがって、プログラムを実行すると、各単語は別々の行に表示されるはずです。私がこれを実行するたびに、私は新しい行にすべての文字を置いていますが、私は新しい行にすべての単語を入れます。これまでの私のコード:FORループを使って文を新しい行に分割する方法Python3

string = "My name is Graham" 
length = len(string) 
for index in range(length): 
    if string[index] == " ": 
     print(" ") 
    else: 
     print(string[index]) 
+0

現在、どこにでもスプリットを使用していません。また、Python forループはそれぞれのためのものであることに注意してください。現在のコードを 'for char in string:print(char)'で置き換えることができます。 – jonrsharpe

+0

ええ、私は意図的にシェルの新しい行にこれを表示したいので、splitを使用していません。私は分割を使う方法を知っています。 –

+2

なぜあなたは単にそれを使用していないのかは分かりません。それで 'string.split()内の単語:print(word)'。そしてなぜあなたは特別なケーススペースをしますか? – jonrsharpe

答えて

2

これを行うには、いくつかの方法があります...

listSplitted = [x for x in string.split(' ')] 
for x in listSplitted: 
    print(x) 

あなたも(あなたが例として与えたものに近い)splitメソッドを自分で実装しようとすることができ:

lastIdx=0 
for idx in range(length): 
    if string[idx] == ' ': 
     print(string[lastIdx:idx-1]) 
     lastIdx = idx+1 

しかし、あなたはまた、あなたがやりたいprint方法を適応させることができます:

最後のケースについて

https://docs.python.org/3/library/functions.html?highlight=print#print

も参照してください、あなたがすることができ

1

を(私はPythonでコードをテストしていないので、オフセット+ -1インデックスがあるかもしれません、あなたは簡単に見つけることができます)

print('\n'.join([x for x in string.split()])) 

とあなたは間隔を維持し、あまりにもそれらを印刷したい場合は、使用することができます:1行でこれを行うには、リスト内包表記と.join()を使用

print('\n \n'.join([x for x in string.split()])) 

また、次のようfor-loopを使用することができます:あなたは、スペースを必要としない場合は

for word in string.split(): 
    print(word) 
    print(' ') 

は、第二の印刷を削除します。

+0

私は最後の解決策が気に入っていますが、2回目の印刷がなければさらに短くすることができます。 print(word、end = '') – Nenad

+0

@Nenadしかし、各単語はスペース=を含む新しい行に出力する必要があると言われました。 –

+0

です。次に、あなたは次のように書くことができます:for string.split()内の単語: \t print( '' + word、end = '\ n') – Nenad

関連する問題