2017-10-05 5 views
1

Ich versuche, einen Weg zu finden, einzelne Wörter in einer Zeichenfolge zu drucken, indem Sie .find() anstelle von .split() verwenden. Mein Code unten druckt die ersten zwei Zeilen, dann zwei Leerzeichen. Ich habe versucht, space_index += quote.find(" ", space_index + 1) in Zeile 7 zu verwenden, aber das führt dazu, dass das Programm für immer Leerzeichen druckt. Was vermisse ich?Python: Verwenden von .find() anstelle von .split()

quote = "they stumble who run fast" 
    start = 0 
    space_index = quote.find(" ") 
    while space_index != -1: 
     print(quote[start:space_index]) 
     start += (space_index + 1) 
     space_index = quote.find(" ", space_index + 1) 

Antwort

5

Sehr nah. Änderte einfach die += in eine = bei der Aktualisierung start. Denken Sie daran, dass space_index der Index des Speicherplatzes in der gesamten Zeichenfolge ist, nicht seit dem vorherigen Leerzeichen.

quote = "they stumble who run fast" 
start = 0 
space_index = quote.find(" ") 
while space_index != -1: 
    print(quote[start:space_index]) 
    start = (space_index + 1) 
    space_index = quote.find(" ", start) 
print(quote[start:]) 
+0

Dies ist immer noch nicht ganz so. Dies druckt nur _up to_, ​​aber nicht das letzte Wort. –

+0

Hoppla, du hast Recht. Fest. –

+1

OP scheint Python 3 zu verwenden, also fügen Sie Klammern für 'print' hinzu. Außerdem kann 'start' verwendet werden, anstatt in' find() 'erneut 1 zu' space_index' hinzuzufügen. – Mark

Verwandte Themen