import statistics as stats from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'group_identity_control' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): Kandisky_med = models.FloatField() Kandisky_count = models.FloatField() def set_groups(self, Ka=[], Ke=[]): players = self.get_players() for p in players: p.Kandisky = p.Preferencia1 + p.Preferencia2 + p.Preferencia3 + p.Preferencia4 + p.Preferencia5 Ka.append(p.Kandisky) Kandisky_med = stats.median(Ka) for p in players: if p.Kandisky >= Kandisky_med: p.participant.vars['grupo'] = "Kandisky" p.grupo = "Kandisky" else: p.participant.vars['grupo'] = "Klee" p.grupo = "Klee" Ke.append(p.grupo) Kandisky_count = Ke.count("Kandisky") if 4 > Kandisky_count: i = 0 while i < 4-Kandisky_count: for p in players: if p.participant.vars['grupo'] == "Klee": p.participant.vars['grupo'] = "Kandisky" p.grupo = "Kandisky" i = i+1 if i == 4-Kandisky_count: break if Kandisky_count > 4: i = 0 while i < Kandisky_count-4: for p in players: if p.participant.vars['grupo'] == "Kandisky": p.participant.vars['grupo'] = "Klee" p.grupo = "Klee" i += 1 if i == Kandisky_count-4: break pass class Group(BaseGroup): pass class Player(BasePlayer): Preferencia1 = models.IntegerField(label="Cúal pintura prefiere?", choices=[ [0, 'Pintura de la Izquierda'], [1, 'Pintura de la Derecha'], ] ) Preferencia2 = models.IntegerField(label="Cúal pintura prefiere?", choices=[ [0, 'Pintura de la Izquierda'], [1, 'Pintura de la Derecha'], ] ) Preferencia3 = models.IntegerField(label="Cúal pintura prefiere?", choices=[ [1, 'Pintura de la Izquierda'], [0, 'Pintura de la Derecha'], ] ) Preferencia4 = models.IntegerField(label="Cúal pintura prefiere?", choices=[ [1, 'Pintura de la Izquierda'], [0, 'Pintura de la Derecha'], ] ) Preferencia5 = models.IntegerField(label="Cúal pintura prefiere?", choices=[ [0, 'Pintura de la Izquierda'], [1, 'Pintura de la Derecha'], ] ) Artista1 = models.StringField(label="Qué artista cree que hizo la obra de la izquierda?", choices=['Kandinsky', 'Klee'], ) Artista2 = models.StringField(label="Qué artista cree que hizo la obra de la derecha?", choices=['Kandinsky', 'Klee'], ) Kandisky = models.FloatField() Kandisky_med = models.FloatField() Kandisky_count = models.FloatField() grupo = models.StringField() pass