2017-12-31 20 views
2

사용자의 사용자 이름, 제목, 단위, 점수 및 점수를 텍스트 파일에 저장하는 프로그램을 개발했습니다.문자열 색인이 목록 및 텍스트 파일 (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') 

그것은 인쇄 :이 코드입니다

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

('ABC'인 사용자 이름)

그리고 다음과 같은 오류 :

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

I 돈 왜 내가이 오류가 발생하는지 알 수 없습니까? 어떤 아이디어?

*이 이미 퀴즈 이전에 추가 : *

quizzes = [] 
quizzes.append(userName) 

답변

3

를 루프 그렇지 테스트의 목록에있는 각 테스트를 통해, 하나 개의 테스트 내에서 각 단어를 반복하는에. 따라서 test [0] 또는 test [4]를 호출하면 한 테스트의 특성을 인덱싱하지 않지만 실수로 한 테스트의 특성에서 문자를 가져 오는 중입니다. 테스트 어레이 주위에 대괄호를 넣어 수정할 수 있습니다. 예를 들어 :

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') 

지금 당신은 여전히 ​​질문이 있으면 내가 편집

+0

괜찮아, 그냥 답장을 하나 개의 테스트 내에 있지 않은 각각의 특성 시험에서 각 시험을 반복하는 – Primusa

+0

네 그게 지금 작업입니다. 대답과 설명에 감사드립니다! – qwe

관련 문제