2016-04-17 207 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()。經過幾個小時的研究,如何做到這一點,我覺得我可能已經解決了問題。 –