2017-05-14 2 views
-2

ich diesen Code verwende: https://pastebin.com/mQkpxdeVPython-Liste Fehler Aufschneiden

wordlist[overticker] = thesentence[0:spaces] 

in dieser Funktion:

def mediumparser(inpdat3): 
    spaceswitch = 0 
    overticker = 0 
    thesentence = "this sentence is to count the spaces" 
    wordlist = [] 
    while spaceswitch == 0: 
     spaces = thesentence.find(' ') 
     wordlist[overticker] = thesentence[0:spaces] # this is where we save the words at 
     thesentence = thesentence[spaces:len(thesentence)] # this is where we change the sentence for the 
                  # next run-through 
     print('here2') 
     print(wordlist) 

ich kann nicht herausfinden, warum es hält nur sagen, außerhalb der Reichweite Listenindex.

Das Programm scheint zu funktionieren, aber es gibt einen Fehler, was mache ich falsch? Ich habe dieses Buch von Mark Lutz für eine Antwort durchgesehen und kann es nicht finden.

+1

nächstes Mal bitte fügen Sie die _relevanten_ Teile Ihres Codes, so dass ich es nicht von Pastebin bearbeiten muss (manchmal gibt es Firewalls, die Pastebin blockieren, zum Beispiel die, die ich bei der Arbeit) –

+0

Eine Sache, die ich bemerkte, ist es dass du wahrscheinlich 'theseness = thesistenz [spaces + 1: len (daseinst)]' anstelle von 'thesence = thesistenz [spaces: len (daseinsein)]' willst. Auch ist "len (thesistent)" optional. – vyrp

Antwort

1

Der "Liste Index out of range" Problem ist nie mit Liste Spleißen, wie in diesem einfachen Test gezeigt:

>>> l = [] 
>>> l[0:1200] 
[] 
>>> l[-400:1200] 
[] 

so dass das Problem mit dem linken Hand Zuordnung ist wordlist[overticker], die eine Zugriffsliste verwendet , nicht schneiden, und das ist "Listenindex außerhalb des Bereichs".

Gerade diese 4 Zeilen Code genügen, um die Ausgabe

wordlist = [] 
while spaceswitch == 0: 
    spaces = thesentence.find(' ') 
    wordlist[overticker] = ... 

wordlist ist nur leer zu finden. Sie müssen die Liste erweitern/anhängen (oder ein Dictionary verwenden, wenn Sie Elemente dynamisch nach einem Schlüssel erstellen möchten)

+0

Danke. Diese Antwort erklärte es und die zweite Antwort, die über das Anfügen gegeben wurde, löste es, also werde ich dieses annehmen. Hast du irgendwelche Tipps, nachdem ich meinen Code darüber gelesen habe, wie man verschiedene Dinge programmiert? (Wenn Sie nicht beschäftigt sind, danke) – CommanderPO

+0

gibt es nicht genug Code hier, und das ist nicht die richtige SE-Website. Wenn Ihr Code funktioniert und Sie Rat brauchen, empfehle ich Ihnen, ihn auf http://codereview.stackexchange.com zu veröffentlichen. Die Leute werden ihn prüfen und Verbesserungen vorschlagen, wenn Ihre Frage richtig aufgebaut ist. –

1

Anstatt wordlist[overticker] mit wordlist als leere Liste zu verwenden, müssen Sie stattdessen anhängen, seit Indizierung Eine leere Liste würde keinen Sinn ergeben.

wordlist.append(thesentence[0:spaces]) 

Alternativ können Sie die Liste mit 20 leeren Zeichenfolgen vorinitiieren.

wordlist = [""]*20 
wordlist[overticker] = thesentence[0:spaces] 

P.S.

wordlist[overticker] heißt Indizierung, wordlist[1:10] heißt Slicing.

+0

Okay, danke Appended gearbeitet, jetzt bin ich nur mit kleineren Bugs konfrontiert, die ich selbst herausfinden kann – CommanderPO