Voor een quiz die uit een reeks goed/fout-vragen bestaat (en waarvan de antwoorden dus kunnen bijgehouden worden in een lijst van True/False-waarden), willen we een klasse bouwen die voor een deelnemer aan de quiz de score bepaalt. Elke deelnemer wordt dus gekenmerkt door zijn naam en door zijn/haar behaalde score. Programmeer het volgende:
QuizDeelnemer
aan te maken. De constructor heeft als argument de naam van de QuizDeelnemer
(type string).
juiste_antwoorden
, dat een lijst van True
/False
-waarden bevat. Deze lijst bevat de juiste antwoorden van de quiz (die dus voor alle deelnemers gelijk zijn).
Maak dit veld daarom static.
bereken_score()
. Het argument van deze methode, een lijst van True
/False
-waarden, stelt de antwoorden van de deelnemer voor.
De methode geeft als resultaat het aantal correcte antwoorden terug (int
). Indien de deelnemer niet het correct aantal antwoorden registreert (m.a.w. de argumentlijst
heeft niet de correcte lengte), dan krijgt die deelnemer de score 0.
__str__()
: deze methode levert een volgende stringgedaante op: [naam:score/totaal]
. Voor een QuizDeelnemer
met naam
"Jan"
, die 6 van de 10 vragen correct beantwoordde, komt er dus: [Jan:6/10]
. De score wordt hierbij bepaald door het meest recente van de methode
bereken_score()
get_max_score()
(zonder argumenten). Deze methode geeft de maximaal behaalde score (over alle deelnemers) als resultaat terug. Programmeer dit als statische methode.
reset_max_score()
(zonder argumenten). De methode zorgt ervoor dat bij de berekening van de maximale score geen rekening gehouden wordt met scores tot tot dusver behaald werden. Programmeer ook deze methode als een statische methode.
QuizDeelnemer.reset_max_score() QuizDeelnemer.juiste_antwoorden = [True, True, False, True, False] an = QuizDeelnemer('An') print(an.bereken_score([True, True, True, True, False])) # 4 print(an) # [An:4/5] jan = QuizDeelnemer('Jan') print(jan.bereken_score([True, True, True, False, False])) # 3 print(jan) -> [Jan:3/5] print(QuizDeelnemer.get_max_score()) # 4