2017-11-23 9 views
0

生徒の回答のリストを正しい回答のリストと比較して、正しく答えられた人の数を計算することが目的です。解答キーは文字列のリストとして保存され、生徒の解答はテキストファイルから読み込まれ、解答キーと一致するように大文字に変換されます。Python - 2つのリストを比較して不正な結果を得る

#Read student answer file 
student_answers = infile.read() 
#Convert student answer to all caps 
student_answers = [answer.upper() for answer in student_answers] 

私のプログラムはエラーなく実行されますが、2つのリストの比較結果が正しくありません。答えのうち3つだけが正しいと表示されており、20の正解があります。以下は私がこれまで持っていた関連コードです。また、出力Program Output Imageのスクリーンショットも掲載しました。質問1,3,5,7、および25のみが間違っているとフラグを付けられます。私は両方のリストをダブルチェックして、正しい情報を含んでいますので、入力エラーではありません。私がどこに間違っているかについての指導があれば感謝します。

for studentLine, keyLine in zip(Student, TestKey): 
    keyAnswer = keyLine.split() 
    studentAnswer = studentLine.split() 
    #Compare student answer to test key 
    if studentAnswer == keyAnswer: 
     correct += 1 
     percent_score += 4 
     print('Good job! Question ', index + 1, 'is correct!') 
     index +=1 
    if studentAnswer != keyAnswer: 
     incorrect += 1 
     incorrect_list.append(index + 1) 
     print('The correct answer to question ', index + 1, 'is ', TestKey[index]) 
     index +=1 
+1

を比較した値を印刷してみてください。それは物事をクリアするでしょう。また、 'if studentAnswer!= keyAnswer:'を 'else:'に置き換えてください。 – CristiFati

+0

ああ完璧な、私は空白を削除するのを忘れていた。とても有難い! –

答えて

0

私はあなたが間違ってストリッピングの代わりに分割したと思います。

だからあなたが使用する必要があります:

keyAnswer = keyLine.strip() 
studentAnswer = studentLine.strip() 
+0

スプリットの代わりにストリップに変更しましたが、他のすべての回答にはまだ空白が表示されています。 .replace( '\ n'、 '')を実行しようとしましたが、まだ動作していません。助言がありますか? –

関連する問題