from otree.api import * doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'availability' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): #リンダ問題Aを選んだ人数 uki_number_start = models.IntegerField(initial=0) #リンダ問題Bを選んだ人数 uki_number_end = models.IntegerField(initial=0) #リンダ問題Aを選んだ人の割合 uki_number_start_per = models.FloatField() #リンダ問題Bを選んだ人数の割合 uki_number_end_per = models.FloatField() class Group(BaseGroup): pass class Player(BasePlayer): selection_uki = models.IntegerField( label="あなたの選択:", widget=widgets.RadioSelect, initial=0, choices=[ [1,'コンビニの方の軒数が多い'], [2,'歯医者の方の軒数が多い'] ] ) # PAGES class Uki(Page): timeout_seconds = 30 form_model = "player" form_fields=["selection_uki"] class ResultsWaitPage(WaitPage): def after_all_players_arrive(group: Group): subsession_infor = group.subsession player_infor = subsession_infor.get_players() for p in player_infor: if p.selection_uki == 1: subsession_infor.uki_number_start = subsession_infor.uki_number_start + 1 elif p.selection_uki == 2: subsession_infor.uki_number_end = subsession_infor.uki_number_end + 1 subsession_infor.uki_number_start_per = subsession_infor.uki_number_start / ( subsession_infor.uki_number_start + subsession_infor.uki_number_end ) subsession_infor.uki_number_end_per = subsession_infor.uki_number_end / ( subsession_infor.uki_number_start + subsession_infor.uki_number_end ) #groupを超えてAを選んだ人の数を統計したい場合 # subsession_A = group.subsession # player_id_se = subsession_A.get_players() # for p in player_id_se: # if p.selection_a == 1: # group.alive_number_cho_a = group.alive_number_cho_a + 1 # elif p.selection_a == 2: # group.alive_number_cho_b = group.alive_number_cho_b + 1 class Results(Page): #@staticmethod def js_vars(player): subsession_infor = player.subsession#該当playerがいるsubsessionデータを抽出 return dict( uki_number_start_per = subsession_infor.uki_number_start_per, uki_number_end_per = subsession_infor.uki_number_end_per # alive_a = [group.alive_number_cho_a, group.alive_number_cho_b], # die_a = [group.die_number_cho_a, group.die_number_cho_b] #あるいは、testlist = [ player.alive_number_cho_a_player, player.alive_number_cho_b_player ] ) page_sequence = [ Uki, ResultsWaitPage, Results ]