from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import string doc = """ 基本情報について教えてください。 """ class Constants(BaseConstants): name_in_url = 'basic_info' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): def set_que1(self): for p in self.get_players(): p.que1A1 = random.randint(10,99) p.que1B1 = random.randint(10,99) p.que1C1 = random.randint(10,99) p.que1D1 = random.randint(10,99) p.que1E1 = random.randint(10,99) p.que1F1 = random.randint(10,99) p.que1G1 = random.randint(10,99) p.que1H1 = random.randint(10,99) p.que1I1 = random.randint(10,99) p.que1J1 = random.randint(10,99) p.que1K1 = random.randint(10,99) p.que1L1 = random.randint(10,99) p.que1M1 = random.randint(10,99) p.que1N1 = random.randint(10,99) p.que1O1 = random.randint(10,99) p.que1P1 = random.randint(10,99) p.que1Q1 = random.randint(10,99) p.que1R1 = random.randint(10,99) p.que1S1 = random.randint(10,99) p.que1T1 = random.randint(10,99) p.que1A2 = random.randint(0,9) p.que1B2 = random.randint(0,9) p.que1C2 = random.randint(0,9) p.que1D2 = random.randint(0,9) p.que1E2 = random.randint(0,9) p.que1F2 = random.randint(0,9) p.que1G2 = random.randint(0,9) p.que1H2 = random.randint(0,9) p.que1I2 = random.randint(0,9) p.que1J2 = random.randint(0,9) p.que1K2 = random.randint(0,9) p.que1L2 = random.randint(0,9) p.que1M2 = random.randint(0,9) p.que1N2 = random.randint(0,9) p.que1O2 = random.randint(0,9) p.que1P2 = random.randint(0,9) p.que1Q2 = random.randint(0,9) p.que1R2 = random.randint(0,9) p.que1S2 = random.randint(0,9) p.que1T2 = random.randint(0,9) p.que1A = p.que1A1 + p.que1A2 p.que1B = p.que1B1 + p.que1B2 p.que1C = p.que1C1 + p.que1C2 p.que1D = p.que1D1 + p.que1D2 p.que1E = p.que1E1 + p.que1E2 p.que1F = p.que1F1 + p.que1F2 p.que1G = p.que1G1 + p.que1G2 p.que1H = p.que1H1 + p.que1H2 p.que1I = p.que1I1 + p.que1I2 p.que1J = p.que1J1 + p.que1J2 p.que1K = p.que1K1 + p.que1K2 p.que1L = p.que1L1 + p.que1L2 p.que1M = p.que1M1 + p.que1M2 p.que1N = p.que1N1 + p.que1N2 p.que1O = p.que1O1 + p.que1O2 p.que1P = p.que1P1 + p.que1P2 p.que1Q = p.que1Q1 + p.que1Q2 p.que1R = p.que1R1 + p.que1R2 p.que1S = p.que1S1 + p.que1S2 p.que1T = p.que1T1 + p.que1T2 def set_earning1(self): for p in self.get_players(): p.earning1 = 0 if p.que1A == p.ans1A: p.earning1 += 5 if p.que1B == p.ans1B: p.earning1 += 5 if p.que1C == p.ans1C: p.earning1 += 5 if p.que1D == p.ans1D: p.earning1 += 5 if p.que1E == p.ans1E: p.earning1 += 5 if p.que1F == p.ans1F: p.earning1 += 5 if p.que1G == p.ans1G: p.earning1 += 5 if p.que1H == p.ans1H: p.earning1 += 5 if p.que1I == p.ans1I: p.earning1 += 5 if p.que1J == p.ans1J: p.earning1 += 5 if p.que1K == p.ans1K: p.earning1 += 5 if p.que1L == p.ans1L: p.earning1 += 5 if p.que1M == p.ans1M: p.earning1 += 5 if p.que1N == p.ans1N: p.earning1 += 5 if p.que1O == p.ans1O: p.earning1 += 5 if p.que1P == p.ans1P: p.earning1 += 5 if p.que1Q == p.ans1Q: p.earning1 += 5 if p.que1R == p.ans1R: p.earning1 += 5 if p.que1S == p.ans1S: p.earning1 += 5 if p.que1T == p.ans1T: p.earning1 += 5 p.aveincome = round(200 * p.earning1 * 0.01,0) p.participant.vars['aveincome'] = p.aveincome class Player(BasePlayer): age = models.IntegerField( label = '年齢' ) gender = models.StringField( choices=["男性", "女性", "その他"], label = '性別' ) department = models.IntegerField( choices=[ [1, '機械工学・システムデザイン学科'], [2, '電気電子物理工学科'], [3, '情報工学科'], [4, '応用科学科'], [5, '環境社会デザイン学科'], [6, '総合政策学部'], [7, '社会基盤学科'], [8, 'その他'], ], label = '''あなたの所属を教えてください。''' ) typing = models.IntegerField( choices=[ [1, 'とても苦手'], [2, '苦手'], [3, '普通'], [4, '得意'], [5, 'とても得意'], ], label ='''あなたは計算が得意ですか?''' ) device = models.IntegerField( choices=[ [1, 'パソコン'], [2, 'スマホ'], [3, 'タブレット'], [4, 'その他'], ], label='''あなたはどのデバイスでこの実験に参加していますか?''' ) divisionQ = models.IntegerField( choices=[ [0, '0'], [1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7'] ], label='''あるグループでは民主的な政府に当たり、3人の町民代表がそれぞれ事業規模(q)として3,6,5を出しました。その際には、このグループの事業規模(q)は何になるでしょうか?''' ) compensationQ1 = models.IntegerField( choices=[ [-1, '事業破綻'], [0, '0'], [1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7'], [8, '8'], [9, '9'], [10, '10'], ], label='''あなたは土地を提供する町の代表で、民主的な政府に当たりました。あなたは単位補償金額(c)を7要求して、その他の町の代表は4,3を支払うとしました。あなたの単位補償金額(c)は何になるでしょうか?''' ) compensationQ2 = models.IntegerField( choices=[ [-1, '事業破綻'], [0, '0'], [1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7'], [8, '8'], [9, '9'], [10, '10'], ], label='''あなたはその他の町の代表で、民主的な政府に当たりました。あなたは単位補償金額(c)を4を支払って、もう一人のその他の町の代表は4を支払うとし、土地を提供する町は9要求しました。あなたの単位補償金額(c)は何になるでしょうか?''' ) compensationQ3 = models.IntegerField( label='''あなたはその他の町の代表で、民主的な政府に当たりました。グループの事業規模は3となりました。あなたは単位補償金額(c)を4を支払って、もう一人のその他の町の代表は4を支払うとし、土地を提供する町は8要求しました。あなたの支払う補償金額はいくらでしょうか?''' ) compensationQ4 = models.IntegerField( label='''あなたはその他の町の代表で、民主的な政府に当たりました。グループの事業規模は3となりました。あなたは単位補償金額(c)を1を支払って、もう一人のその他の町の代表は5を支払うとし、土地を提供する町は3要求しました。あなたの支払う補償金額はいくらでしょうか?''' ) aveincome = models.FloatField() earning1 = models.IntegerField() que1A1 = models.IntegerField() que1B1 = models.IntegerField() que1C1 = models.IntegerField() que1D1 = models.IntegerField() que1E1 = models.IntegerField() que1F1 = models.IntegerField() que1G1 = models.IntegerField() que1H1 = models.IntegerField() que1I1 = models.IntegerField() que1J1 = models.IntegerField() que1K1 = models.IntegerField() que1L1 = models.IntegerField() que1M1 = models.IntegerField() que1N1 = models.IntegerField() que1O1 = models.IntegerField() que1P1 = models.IntegerField() que1Q1 = models.IntegerField() que1R1 = models.IntegerField() que1S1 = models.IntegerField() que1T1 = models.IntegerField() que1A2 = models.IntegerField() que1B2 = models.IntegerField() que1C2 = models.IntegerField() que1D2 = models.IntegerField() que1E2 = models.IntegerField() que1F2 = models.IntegerField() que1G2 = models.IntegerField() que1H2 = models.IntegerField() que1I2 = models.IntegerField() que1J2 = models.IntegerField() que1K2 = models.IntegerField() que1L2 = models.IntegerField() que1M2 = models.IntegerField() que1N2 = models.IntegerField() que1O2 = models.IntegerField() que1P2 = models.IntegerField() que1Q2 = models.IntegerField() que1R2 = models.IntegerField() que1S2 = models.IntegerField() que1T2 = models.IntegerField() que1A = models.IntegerField() que1B = models.IntegerField() que1C = models.IntegerField() que1D = models.IntegerField() que1E = models.IntegerField() que1F = models.IntegerField() que1G = models.IntegerField() que1H = models.IntegerField() que1I = models.IntegerField() que1J = models.IntegerField() que1K = models.IntegerField() que1L = models.IntegerField() que1M = models.IntegerField() que1N = models.IntegerField() que1O = models.IntegerField() que1P = models.IntegerField() que1Q = models.IntegerField() que1R = models.IntegerField() que1S = models.IntegerField() que1T = models.IntegerField() ans1A = models.IntegerField(blank=True, null=True, label='''答え''') ans1B = models.IntegerField(blank=True, null=True, label='''答え''') ans1C = models.IntegerField(blank=True, null=True, label='''答え''') ans1D = models.IntegerField(blank=True, null=True, label='''答え''') ans1E = models.IntegerField(blank=True, null=True, label='''答え''') ans1F = models.IntegerField(blank=True, null=True, label='''答え''') ans1G = models.IntegerField(blank=True, null=True, label='''答え''') ans1H = models.IntegerField(blank=True, null=True, label='''答え''') ans1I = models.IntegerField(blank=True, null=True, label='''答え''') ans1J = models.IntegerField(blank=True, null=True, label='''答え''') ans1K = models.IntegerField(blank=True, null=True, label='''答え''') ans1L = models.IntegerField(blank=True, null=True, label='''答え''') ans1M = models.IntegerField(blank=True, null=True, label='''答え''') ans1N = models.IntegerField(blank=True, null=True, label='''答え''') ans1O = models.IntegerField(blank=True, null=True, label='''答え''') ans1P = models.IntegerField(blank=True, null=True, label='''答え''') ans1Q = models.IntegerField(blank=True, null=True, label='''答え''') ans1R = models.IntegerField(blank=True, null=True, label='''答え''') ans1S = models.IntegerField(blank=True, null=True, label='''答え''') ans1T = models.IntegerField(blank=True, null=True, label='''答え''') def vars_for_admin_report(): ans1A = [ p.ans1A for p in self.get_players() ] ans1B = [ p.ans1B for p in self.get_players() ] ans1C = [ p.ans1C for p in self.get_players() ] ans1D = [ p.ans1D for p in self.get_players() ] ans1E = [ p.ans1E for p in self.get_players() ] ans1F = [ p.ans1F for p in self.get_players() ] ans1G = [ p.ans1G for p in self.get_players() ] ans1H = [ p.ans1H for p in self.get_players() ] ans1I = [ p.ans1I for p in self.get_players() ] ans1J = [ p.ans1J for p in self.get_players() ] ans1K = [ p.ans1K for p in self.get_players() ] ans1L = [ p.ans1L for l in self.get_players() ] ans1M = [ p.ans1M for p in self.get_players() ] ans1N = [ p.ans1N for p in self.get_players() ] ans1O = [ p.ans1O for p in self.get_players() ] ans1P = [ p.ans1P for p in self.get_players() ] ans1Q = [ p.ans1Q for p in self.get_players() ] ans1R = [ p.ans1R for p in self.get_players() ] ans1S = [ p.ans1S for p in self.get_players() ] ans1T = [ p.ans1T for p in self.get_players() ]