2016-04-17 292 views
0

我有两个列表在我的Python代码的内容为我的任务:比较两个列表

exam_solutions = ['B','B','B','B','B','B','B','B','B','B'] 
student_answers = [] 

在我的代码,我有用户输入答案的选择题。然后我将它设置为追加他们输入到student_answers列表中的答案。我想比较两个列表,并输出正确的答案,以便以后可以显示正确的百分比。

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

然后比较后的两个名单是我能够输出6分的答案是正确的?

+0

我投票关闭这一问题作为题外话,因为*问题,要求作业帮助必须包括的摘要你迄今为止解决问题所做的工作,以及你解决问题的难点描述。* –

+0

我已经完成了作业的代码。我想过发布它,但我觉得只是分享我的列表足以解释我正在比较列表的问题。 –

回答

0

可以使用zip()sum()找到正确答案的数目:

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

x == y将或者TrueFalse(其是1和分别为)。然后我们找到这些的总和,正确答案的数量。


是一个小更高效,定义自己的自定义功能:

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()。经过几个小时的研究,如何做到这一点,我觉得我可能已经解决了问题。 –