2017-06-17 55 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循環:你可以用'for string:print(char)'中的char替換當前的代碼。 – jonrsharpe

+0

是的,我特意不使用拆分,因爲我想在shell上的新行上打印此信息。我知道如何使用分割。 –

+2

我不清楚爲什麼你不只是使用它,那麼:'在string.split():print(word)'中輸入單詞'。你爲什麼還要特殊情況下的空間? – jonrsharpe

回答

2

有幾種方法可以做到這一點...

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

,你也可以嘗試實施拆分方法自己(這是更接近你所付出的爲例) :

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

但你也可以適應print方法做你想要什麼:

for idx in range(length): 
    if string[idx] == ' ': 
     print("") # this appends a new line 
    else: 
     print(string[idx], end='') 

在過去的情況下,請同時參閱https://docs.python.org/3/library/functions.html?highlight=print#print

(我沒有測試在Python代碼,所以有可能是+ -1度偏置,你會很容易找到)

1

你可以使用列表理解和.join()做到這一條線:

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

,如果你想保持間距,並打印出來呢,你可以使用:

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

你也可以使用一個for-loop如下所示:

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

刪除第二打印,如果你不想要的空間。

+0

我喜歡最後的解決方案,但它可以更短,沒有第二次印刷。相反,你可以輸入:print(word,end ='') – Nenad

+0

@Nenad但是有人提到每個單詞都應該以新行打印,包括空格=) –

+0

我明白了。然後你可以寫這樣的東西:for string in string.split(): \t print(''+ word,end ='\ n') – Nenad