from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import csv import numpy doc = """ Results - Questionnaire: Part 3 Check & correct answers for the "Numeracy test" and Payments for Part 3 """ class Constants(BaseConstants): name_in_url = 'code:code_SS_results_part3' players_per_group = 2 # players_per_supergroup = 4 # --> only relevant for Players B - Part 2 # basically the group brings together all Players A from the same batch/session num_rounds = 1 class Subsession(BaseSubsession): numeracy_n1_solution = models.IntegerField() numeracy_n2_solution = models.IntegerField() numeracy_n3_solution = models.IntegerField() numeracy_n4_solution = models.IntegerField() n_tokens_equal_to_1_eur = models.IntegerField() def creating_session(self): self.n_tokens_equal_to_1_eur = self.session.config['n_tokens_equal_to_1_eur'] self.numeracy_n1_solution = self.session.config['numeracy_n1_solution'] self.numeracy_n2_solution = self.session.config['numeracy_n2_solution'] self.numeracy_n3_solution = self.session.config['numeracy_n3_solution'] self.numeracy_n4_solution = self.session.config['numeracy_n4_solution'] for p in self.get_players(): p.n_tokens_equal_to_1_eur = self.session.config['n_tokens_equal_to_1_eur'] # Conversion rate: number of tokens equal to 1 Euro p.numeracy_n1_solution = self.session.config['numeracy_n1_solution'] # Correct answer - Numeracy n. 1 - Prob. man is member of the choir (25%) p.numeracy_n2_solution = self.session.config['numeracy_n2_solution'] # Correct answer - Numeracy n. 2 - N. times odd number is shown by 5-sided die out of 50 throws (30) p.numeracy_n3_solution = self.session.config['numeracy_n3_solution'] # Correct answer - Numeracy n. 3 - N. times 6 is shown by 6-sided loaded die out of 70 throws (20) p.numeracy_n4_solution = self.session.config['numeracy_n4_solution'] # Correct answer - Numeracy n. 4 - Prob. poisoned mushroom is red (50%) class Group(BaseGroup): pass class Player(BasePlayer): n_tokens_equal_to_1_eur = models.IntegerField() # quest_numeracy_n1 = models.IntegerField() quest_numeracy_n2 = models.IntegerField() quest_numeracy_n3 = models.IntegerField() quest_numeracy_n4 = models.IntegerField() # numeracy_n1_solution = models.IntegerField() numeracy_n2_solution = models.IntegerField() numeracy_n3_solution = models.IntegerField() numeracy_n4_solution = models.IntegerField() # quest_numeracy_n1_ok = models.IntegerField() quest_numeracy_n2_ok = models.IntegerField() quest_numeracy_n3_ok = models.IntegerField() quest_numeracy_n4_ok = models.IntegerField() quest_numeracy_n_answers_ok = models.IntegerField() # part3_payoff = models.IntegerField() part3_payoff_eur = models.FloatField() part3_payoff_eur_to_show = models.FloatField() #