from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random class Constants(BaseConstants): name_in_url = 'surveyB_1' players_per_group = None num_rounds = 4 class Subsession(BaseSubsession): def creating_session(self): for p in self.get_players(): p1_list = [p.p1_1, p.p1_2, p.p1_3] random.shuffle(p1_list) p.p1_1 = p1_list[0] p.p1_2 = p1_list[1] p.p1_3 = p1_list[2] p2_list = [p.p2_1, p.p2_2, p.p2_3] random.shuffle(p2_list) p.p2_1 = p2_list[0] p.p2_2 = p2_list[1] p.p2_3 = p2_list[2] p3_list = [p.p3_1, p.p3_2, p.p3_3] random.shuffle(p3_list) p.p3_1 = p3_list[0] p.p3_2 = p3_list[1] p.p3_3 = p3_list[2] p4_list = [p.p4_1, p.p4_2, p.p4_3] random.shuffle(p4_list) p.p4_1 = p4_list[0] p.p4_2 = p4_list[1] p.p4_3 = p4_list[2] p.number = p.id_in_subsession % 2 class Group(BaseGroup): pass class Player(BasePlayer): number = models.BooleanField() one = models.StringField( choices=['A', 'B', 'C', '0'], label='A~Cからひとつ選んでください。0は無回答を意味します。', widget=widgets.RadioSelectHorizontal ) Q1 = models.StringField( choices=['A', 'B', 'C', '0'], label='いちばん印象に残っている商品はどれですか。0は無回答を意味します。', widget=widgets.RadioSelectHorizontal ) Q2 = models.StringField( choices=['0','1', '2', '3', '4', '5'], label='Aの商品に対する好感度を教えてください。1がより低度、5がより高度を表し、0は無回答を意味します。', widget=widgets.RadioSelectHorizontal ) Q3 = models.StringField( choices=['0', '1', '2', '3', '4', '5'], label='Bの商品に対する好感度を教えてください。1がより低度、5がより高度を表し、0は無回答を意味します。', widget=widgets.RadioSelectHorizontal ) Q4 = models.StringField( choices=['0', '1', '2', '3', '4', '5'], label='Cの商品に対する好感度を教えてください。1がより低度、5がより高度を表し、0は無回答を意味します。', widget=widgets.RadioSelectHorizontal ) age = models.IntegerField(label='あなたの年齢を教えてください。答えたくない場合は0と記入してください。') gender = models.StringField( choices=['男性', '女性', '答えたくない'], label='あなたの性別を教えてください。', widget=widgets.RadioSelectHorizontal ) Q5 = models.StringField( choices=['0', '1', '2', '3', '4', '5'], label='あなたが商品を選ぶとき、「ブランド」をどの程度重視しますか。1がより低度、5がより高度を表し、0は無回答を意味します。', widget=widgets.RadioSelectHorizontal ) Q6 = models.StringField( choices=['0', '1', '2', '3', '4', '5'], label='あなたが商品を選ぶとき、「価格」をどの程度重視しますか。1がより低度、5がより高度を表し、0は無回答を意味します。', widget=widgets.RadioSelectHorizontal ) Q7 = models.StringField( choices=['0', '1', '2', '3', '4', '5'], label='あなたが商品を選ぶとき、「性能」をどの程度重視しますか。1がより低度、5がより高度を表し、0は無回答を意味します。', widget=widgets.RadioSelectHorizontal ) Q8 = models.StringField( choices=['0', '1', '2', '3', '4', '5'], label='あなたはよく衝動買いをしますか。1がまったくしない、5がよくするを表し、0は無回答を意味します。', widget=widgets.RadioSelectHorizontal ) p1_1 = models.StringField(initial='/static/survey2/product1_1.png') p1_2 = models.StringField(initial='/static/survey2/product1_2.png') p1_3 = models.StringField(initial='/static/survey2/product1_3.png') p2_1 = models.StringField(initial='/static/survey2/product2_1.png') p2_2 = models.StringField(initial='/static/survey2/product2_2.png') p2_3 = models.StringField(initial='/static/survey2/product2_3.png') p3_1 = models.StringField(initial='/static/survey2/product3_1.png') p3_2 = models.StringField(initial='/static/survey2/product3_2.png') p3_3 = models.StringField(initial='/static/survey2/product3_3.PNG') p4_1 = models.StringField(initial='/static/survey2/product4_1.PNG') p4_2 = models.StringField(initial='/static/survey2/product4_2.PNG') p4_3 = models.StringField(initial='/static/survey2/product4_3.PNG') # 画像シャッフル用関数