2016-04-17 13 views
0

の内容を比較:は私の割り当てのための私のPythonコードで、私は二つのリストを持っている二つのリスト

私のコードで
exam_solutions = ['B','B','B','B','B','B','B','B','B','B'] 
student_answers = [] 

、私は、ユーザーの入力を複数の選択肢の質問に対する答えを持っています。次に、student_answersリストに入力した回答を追加するように設定しました。私は2つのリストを比較して正しい答えを出力したいので、後で正確なパーセンテージを表示することができます。

例:exam_solutions = ['B','B','B','B','B','B','B','B','B','B'] student_answers = ['A','B','B','C','B','B','A','B','B','D']

は、2つのリストを比較した後、私は6つの答えが正しいことを出力できるのですか?

+0

を問題を解決するために今まで行ってきた作業と、それを解決するための難しさの説明です。* –

+0

私はすでに割り当てのためのコードを完成しています。私はそれを投稿することを考えましたが、私のリストを共有するだけで、私がリストを比較していた問題を説明するのに十分だったと感じました。 –

答えて

0

あなたがzip()sum()を使用して正解数を見つけることができます。

correct = sum(x == y for x, y in zip(exam_solutions, student_answers)) 

x == y1とである(True又はFalseのいずれかであろうそれぞれ)。次に、これらの合計、正解の数を求めます。


は、もう少し効率的で独自にカスタマイズした機能を定義するには:*質問の要約を含まなければならない宿題の助けを求めているため、オフトピックとして、私はこの質問を閉じるために投票しています

def correct_over_six(exam_solutions, student_answers): 
    correct = 0 
    for x, y in zip(exam_solutions, student_answers): 
     correct += (x == y) 
     if correct >= 6: 
      return True 
    return False 
+0

これは尋ねるのが馬鹿に聞こえるかもしれませんが、私のexam_solutionsリストがすべてBという答えではない場合、これは変わりますか? –

+0

@python_noob:答えの数から間違った答えの数を差し引いたものではなく、正解の総数を見つけることができます。答えが与えられない場合、それは正しいとみなされません。 – zondo

+0

これはまさに私が探していたものです。実際に私のexam_solutionsリストに正解があるまで、プレースホルダの回答を使っていました。 –

0

あなたは正しい答えがありますどのように多くの試合/カウントするために、それぞれ一緒に各回答や解決策を入れてzip()を使用してsum()ことができます。

>>> exam_solutions = ['B','B','B','B','B','B','B','B','B','B'] 
>>> student_answers = ['A','B','B','C','B','B','A','B','B','D'] 
>>> sum(a == b for a, b in zip(student_answers, exam_solutions)) 
6 
+0

ありがとう、私はzip()とsum()を使用するとは思わなかった。これを行う方法を数時間研究した後、私は可能な解決策で頭の中にいるように感じました。 –

関連する問題