2017-12-31 44 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]を呼び出すと、1つのテストの特性を索引付けするのではなく、誤って1つのテストの特性から文字を取得しています。 これは、テスト配列のまわりに角かっこを入れることで修正できます。たとえば :

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

申し分が、ちょうど返信1つのテスト内ではない、それぞれの特性、テスト内の各テストを繰り返し処理している – Primusa

+0

うん、それはそれが今取り組みました。答えと説明をありがとう! – qwe

関連する問題