2017-12-31 40 views
2

Ich habe ein Programm entwickelt, das den Benutzernamen, das Thema, die Einheit, das Ergebnis und die Note eines Benutzers in eine Textdatei einträgt. Dies ist der Code:String-Index außerhalb des Bereichs Fehler mit Listen und Textdateien (mit Python)

tests.extend([subject, unit, str(score), grade]) 
print tests 

with open("test.txt", "a") as testFile: 
    for test in tests: 
     userName = test[0] 
     subject = test[1] 
     unit = test[2] 
     score = test[3] 
     grade = test[4] 

     testFile.write(userName + ';' + subject + ';' + unit + ';' + str(score) + ';' + grade + '\n') 

Er druckt:

['abc', 'history', 'Nazi Germany', '65', 'C'] 

('abc' wird der Benutzername)

Und der folgende Fehler:

grade = test[4] 
IndexError: string index out of range 

I don Warum weiß ich nicht, warum ich diesen Fehler bekomme? Irgendwelche Ideen?

* Bereits früher in Quiz hinzugefügt: *

quizzes = [] 
quizzes.append(userName) 

Antwort

3

In der for-Schleife Sie in einem Test durch jedes Wort iterieren, nicht durch jeden Test in einer Liste von Tests. Wenn Sie also test [0] oder test [4] aufrufen, indexieren Sie kein Merkmal eines Tests, aber Sie erhalten versehentlich ein Zeichen aus einem Merkmal eines Tests. Sie können dies beheben, indem Sie Klammern um Ihr Testarray legen. Zum Beispiel:

Tests = [['abc', 'history', 'Nazi Germany', '65', 'C'], 
     ['test2', 'python', 'iteration', '65', 'C']] 
for username, subject, unit, score, grade in tests: 
    testFile.write(username + ';' + subject + ';' + unit + ';' + str(score) + ';' + grade + '\n') 

Nun werden Sie durch jeden Test innerhalb von Tests laufen, nicht jedes Merkmal innerhalb einer Test

+0

in Ordnung i bearbeitet, nur antworten, wenn Sie noch Fragen haben – Primusa

+0

Yep, das ist es jetzt zu arbeiten. Danke für die Antwort und Erklärung! – qwe

Verwandte Themen