2016-04-17 16 views
0

ich für meine Aufgabe zwei Listen in meinem Python-Code haben:vergleichen den Inhalt von zwei Listen

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

In meinem Code, ich habe die Benutzereingabe die Antwort auf die Multiple-Choice-Frage. Dann habe ich es eingestellt, um die Antwort anzufügen, die sie in student_answers Liste eingaben. Ich möchte die beiden Listen vergleichen und die richtigen Antworten ausgeben lassen, damit ich den Prozentsatz zu einem späteren Zeitpunkt korrekt anzeigen kann.

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

dann nach einem Vergleich der beiden Listen bin ich ausgeben kann, dass 6 Antworten richtig sind?

+0

Ich wähle diese Frage zu schließen, wie Off-Topic, weil * Fragen für Hausaufgaben Hilfe bitten muss eine Zusammenfassung enthalten:


Um ein wenig effizienter zu gestalten, eigene benutzerdefinierte Funktion zu sein die Arbeit, die Sie bis jetzt getan haben, um das Problem zu lösen, und eine Beschreibung der Schwierigkeit, die Sie haben, es zu lösen. * –

+0

Ich habe bereits Code für die Aufgabe beendet. Ich dachte darüber nach, es zu posten, aber ich fühlte, dass das Teilen meiner Listen genug war, um das Problem zu erklären, das ich hatte, das Listen vergleicht. –

Antwort

0

Sie die Anzahl der richtigen Antworten finden können zip() und sum() mit:

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

x == y wird entweder True oder False (die 1 und 0). Wir finden dann die Summe dieser, die Anzahl der richtigen Antworten.

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

Das klingt vielleicht dumm zu fragen, aber würde sich das ändern, wenn meine exam_solutions-Liste nicht alle B als Antwort ist? –

+0

@python_noob: Dies wird die Gesamtzahl der richtigen Antworten finden, nicht die Anzahl der Antworten minus der Anzahl der falschen Antworten. Wenn eine Antwort nicht gegeben wird, zählt sie nicht als richtig. – zondo

+0

Okay, großartig, dann habe ich genau das gesucht. Ich habe gerade Platzhalter-Antworten verwendet, bis ich die richtigen Antworten in meiner exam_solutions-Liste habe. –

0

Sie zip() verwenden können zusammen jede Antwort und Lösung zu setzen bzw. und sum() zu zählen, wie viele Spiele/richtigen Antworten gibt es:

>>> 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

Danke, ich habe nicht einmal daran gedacht, zip() und sum() zu benutzen. Nach ein paar Stunden, in denen ich nachforschte, wie das geht, fühlte ich mich mit möglichen Lösungen über meinen Kopf hinweg. –

Verwandte Themen