import itertools import random 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 = 'sesgo_control' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): def aleato(self): if self.round_number == 1: Sesgo = itertools.cycle(['Mayor', 'Menor']) for p in self.get_players(): if p.participant.vars['grupo'] == "Kandisky": p.Sesgo = next(Sesgo) if p.participant.vars['grupo'] == "Klee": p.Sesgo = next(Sesgo) for p in self.get_players(): p.participant.vars['Sesgo'] = p.Sesgo for p in self.get_players(): if p.participant.vars['Sesgo'] == 'Mayor': p.Numero_inicial = '579; 692; 849' p.Intervalo1 = '601 y 700' p.Intervalo2 = '701 y 800' p.Intervalo3 = '801 y 900' p.Intervalo4 = '901 y 1000' p.Numero_generado = '680' p.Numero_grupo = '650' p.Sesgo = 'Mayor' else : p.Numero_inicial = '421; 308; 151' p.Intervalo1 = '301 y 400' p.Intervalo2 = '201 y 300' p.Intervalo3 = '101 y 200' p.Intervalo4 = '1 y 100' p.Numero_generado = '320' p.Numero_grupo = '350' p.Sesgo = 'Menor' pass class Group(BaseGroup): pass class Player(BasePlayer): Sesgo = models.StringField() Numero_inicial = models.StringField() Intervalo1 = models.StringField() Intervalo2 = models.StringField() Intervalo3 = models.StringField() Intervalo4 = models.StringField() Numero_generado = models.StringField() Numero_grupo = models.StringField() De_1_a_100 = models.IntegerField(initial=0, min=0, max=20) De_101_a_200 = models.IntegerField(initial=0, min=0, max=20) De_201_a_300 = models.IntegerField(initial=0, min=0, max=20) De_301_a_400 = models.IntegerField(initial=0, min=0, max=20) De_401_a_500 = models.IntegerField(initial=0, min=0, max=20) De_501_a_600 = models.IntegerField(initial=0, min=0, max=20) De_601_a_700 = models.IntegerField(initial=0, min=0, max=20) De_701_a_800 = models.IntegerField(initial=0, min=0, max=20) De_801_a_900 = models.IntegerField(initial=0, min=0, max=20) De_901_a_1000 = models.IntegerField(initial=0, min=0, max=20) respuesta1 = models.FloatField(label="Cuánto ganaria? Solo incluya lo generado por el intervalo ganador") respuesta2 = models.FloatField(label="Cuánto seria el costo? Solo incluya lo perdido por los intervalos no ganadores") respuesta3 = models.FloatField(label="Cuánto es la ganancia neta? Lo ganado por la apuesta descontando el costo") pass