from otree.api import Currency as c, currency_range, expect, Bot from . import * import random, math class PlayerBot(Bot): def play_round(self): # wb: (à désactiver pour le moment) # if self.player.subsession.period == 1: # yield P01_intro inputs = get_inputs(self.player.player_income) yield P02_main, dict(input01 = inputs[0], input02 = inputs[1], input03 = inputs[2], input04 = inputs[3], input05 = inputs[4], input06 = inputs[5], input07 = inputs[6]) yield P03_feedback if self.player.subsession.round == 1 and self.player.subsession.period == 5: yield ( P012_Questionnaire, { 'q1': 'c', 'q2': 'a', 'q3': 'a', 'q4': 'b', 'q5': 'a', 'q6': 'a', },) yield ( P013_Welcome, { },) if (self.player.subsession.round == 1 and self.player.subsession.period == 5) or \ (self.player.subsession.round == 2 and self.player.subsession.period == 10) : yield P021_endround if self.player.round_number == C.NUM_ROUNDS: age = random.randint(13, 100) gender = random.choice(['Male', 'Female', 'Prefer not to say']) degree = random.choice(['Bachelor', 'Master', 'PhD', 'Other']) admin = random.choice( ['Science', 'Economics', 'Finance', 'Management and Business Administration', 'Other']) risk = random.randint(0, 10) compete = random.randint(0, 10) satisfaction = random.randint(0, 10) financeknowledge = random.randint(0,10) yield P031_Additional, dict(risk=risk, compete=compete, satisfaction=satisfaction) yield P0311_Additional, dict(financeknowledge=financeknowledge) yield P032_Demographics, dict(age=age, gender=gender, degree=degree, admin=admin) yield P04_payoffs def get_inputs(income): rnd_income_used = max(random.random(), random.random(), random.random()) #wb: rnd_input1 = 0 rnd_input2 = random.random() rnd_input3 = random.random() rnd_input4 = random.random() rnd_input5 = random.random() rnd_input6 = random.random() rnd_input7 = random.random() sum_rnd_inputs = rnd_input1 + rnd_input2 + rnd_input3 + rnd_input4 + rnd_input5 + rnd_input6 + rnd_input7 income_used = rnd_income_used * income input1 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[0] ) * rnd_input1 * income_used * ( 1 / sum_rnd_inputs ) ) input2 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[1] ) * rnd_input2 * income_used * ( 1 / sum_rnd_inputs ) ) input3 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[2] ) * rnd_input3 * income_used * ( 1 / sum_rnd_inputs ) ) input4 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[3] ) * rnd_input4 * income_used * ( 1 / sum_rnd_inputs ) ) input5 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[4] ) * rnd_input5 * income_used * ( 1 / sum_rnd_inputs ) ) input6 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[5] ) * rnd_input6 * income_used * ( 1 / sum_rnd_inputs ) ) input7 = math.floor( ( 1 / C.PURCHASE_PRICE_BOND[6] ) * rnd_input7 * income_used * ( 1 / sum_rnd_inputs ) ) return([input1, input2, input3, input4, input5, input6, input7])