from otree.api import * c = cu doc = '' class C(BaseConstants): NAME_IN_URL = 'Frageboegen' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 MY_CONSTANT = 0 LOTTERIE_A_1 = 1 LOTTERIE_A_2 = 0.8 LOTTERIE_B_1 = 2 LOTTERIE_B_2 = 0.1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): Aufmerksamkeitskontrolle = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Bitte wählen Sie hier "weder noch".', widget=widgets.RadioSelect) Wahrheitsgemaesse_Antworten = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich habe die Fragen wahrheitsgemäß beantwortet.', widget=widgets.RadioSelect) Frage1 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich bin ein vorsichtiger Mensch.', widget=widgets.RadioSelect) Frage2 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Auf mich kann man sich verlassen.', widget=widgets.RadioSelect) Frage3 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich gehe gerne und oft Risiken ein.', widget=widgets.RadioSelect) Frage4 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich zeige oft meine Gefühle und Emotionen.', widget=widgets.RadioSelect) Frage5 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Meine Entscheidungen sind gut durchdacht.', widget=widgets.RadioSelect) Frage7 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich bin ein ängstlicher Mensch.', widget=widgets.RadioSelect) Frage8 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich würde mich als gelassen bezeichnen.', widget=widgets.RadioSelect) Frage9 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='In wichtigen Situationen entscheide ich rational.', widget=widgets.RadioSelect) Frage10 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Sicherheit ist für mich ein entscheidender Faktor.', widget=widgets.RadioSelect) Frage11 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Mich kann man leicht provozieren.', widget=widgets.RadioSelect) HL_1 = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) HL_2 = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) HL_3 = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) HL_4 = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) HL_5 = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) HL_6 = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) HL_7 = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) HL_8 = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) HL_9 = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) HL_10 = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) HL = models.IntegerField(choices=[[1, 'A'], [2, 'B']], widget=widgets.RadioSelect) Alter = models.IntegerField(choices=[[1, '20 oder jünger'], [2, '21 bis 25'], [3, '26 bis 30'], [4, '31 bis 35'], [5, '36 bis 40'], [6, '41 oder älter'], [7, 'keine Angabe']], label='Wie alt sind Sie?', widget=widgets.RadioSelect) Studiengang = models.IntegerField(choices=[[1, 'Wirtschaftswissenschaften'], [2, 'Ingenieurswissenschaften'], [3, 'Naturwissenschaften'], [4, 'Sozialwissenschaften'], [5, 'sonstige'], [6, 'ich studiere nicht'], [7, 'keine Angabe']], label='Welches Studienfach belegen Sie?', widget=widgets.RadioSelect) Geschlecht = models.IntegerField(choices=[[1, 'weiblich'], [2, 'männlich'], [3, 'divers'], [4, 'keine Angabe']], label='Welchem Geschlecht ordnen Sie sich zu?', widget=widgets.RadioSelect) Beweggruende = models.LongStringField(blank=True) Abstimmungsgruende = models.LongStringField(blank=True) Kommentare = models.LongStringField(blank=True) Nash = models.IntegerField(choices=[[1, 'ja'], [2, 'nein'], [3, 'nicht sicher'], [4, 'keine Angabe']], label='Sagt Ihnen ein Nash-Gleichgewicht etwas?', widget=widgets.RadioSelect) Kenntnisse = models.IntegerField(choices=[[1, 'sehr gut'], [2, 'gut'], [3, 'durchschnittlich'], [4, 'eher schlecht'], [5, 'schlecht'], [6, 'keine Angabe']], label='Wie gut würden Sie Ihre Kenntnisse in Spieltheorie bewerten?', widget=widgets.RadioSelect) Erfahrung = models.IntegerField(choices=[[1, 'noch keine'], [2, '1 bis 2'], [3, '3 bis 5'], [4, '6 bis 10'], [5, '11 oder mehr'], [6, 'keine Angabe']], label='An wie vielen spieltheoretischen Experimente (im KD2Lab oder online) haben Sie ungefähr schon teilgenommen?', widget=widgets.RadioSelect) Auszahlung = models.CurrencyField() auszahlung_EURO = models.FloatField() auszahlung_nur_experiment = models.FloatField() RS_1 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich versuche, Situationen zu vermeiden, die ein tiefes Nachdenken über etwas erfordern.', widget=widgets.RadioSelect) RS_2 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich bin nicht so gut darin, komplizierte Probleme zu lösen.', widget=widgets.RadioSelect) RS_3 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label=' Ich mag intellektuelle Herausforderungen.', widget=widgets.RadioSelect) RS_4 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich bin nicht sehr gut darin, Probleme zu lösen, die eine sorgfältige logische Analyse erfordern.', widget=widgets.RadioSelect) RS_5 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich mag es nicht, viel nachdenken zu müssen.', widget=widgets.RadioSelect) RS_6 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich mag es, Probleme zu lösen, die viel Nachdenken erfordern.', widget=widgets.RadioSelect) RS_7 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Denken ist nicht meine Vorstellung von einer angenehmen Tätigkeit.', widget=widgets.RadioSelect) RS_8 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich bin kein sehr analytischer Denker.', widget=widgets.RadioSelect) RS_9 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Sorgfältiges Nachdenken gehört nicht zu meinen Stärken.', widget=widgets.RadioSelect) RS_10 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich bevorzuge komplexe Probleme gegenüber einfachen Problemen.', widget=widgets.RadioSelect) RS_11 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Wenn ich lange und intensiv über etwas nachdenke, habe ich wenig Freude daran.', widget=widgets.RadioSelect) RS_12 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich kann unter Druck nicht gut denken.', widget=widgets.RadioSelect) RS_13 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich bin viel besser darin, Dinge logisch zu durchdenken als die meisten Menschen.', widget=widgets.RadioSelect) RS_14 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich denke logisch.', widget=widgets.RadioSelect) RS_15 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich mag es, in abstrakten Begriffen zu denken.', widget=widgets.RadioSelect) RS_16 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich habe kein Problem damit, Dinge sorgfältig zu durchdenken.', widget=widgets.RadioSelect) RS_17 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Mit Logik kann ich in der Regel gut Probleme in meinem Leben lösen.', widget=widgets.RadioSelect) RS_18 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Es reicht mir, die Antwort zu kennen, ohne die Gründe dafür verstehen zu müssen.', widget=widgets.RadioSelect) RS_19 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label=' Ich habe normalerweise klare, erklärbare Gründe für meine Entscheidungen.', widget=widgets.RadioSelect) RS_20 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Neue Denkweisen zu lernen würde mich sehr reizen.', widget=widgets.RadioSelect) ES_1 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich verlasse mich gerne auf meine intuitiven Eindrücke.', widget=widgets.RadioSelect) ES_2 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich habe kein besonders gutes Gespür für Intuition.', widget=widgets.RadioSelect) ES_3 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Wenn ich Probleme in meinem Leben lösen will, funktioniert mein Bauchgefühl normalerweise gut.', widget=widgets.RadioSelect) ES_4 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich vertraue meinen Ahnungen.', widget=widgets.RadioSelect) ES_5 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Intuition kann eine sehr nützliche Methode sein, um Probleme zu lösen.', widget=widgets.RadioSelect) ES_6 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich folge oft meinem Instinkt, wenn ich mich für eine bestimmte Vorgehensweise entscheide.', widget=widgets.RadioSelect) ES_7 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich vertraue meinen ersten Gefühlen gegenüber Menschen.', widget=widgets.RadioSelect) ES_8 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Wenn es darum geht, Menschen zu vertrauen, kann ich mich meist auf mein Bauchgefühl verlassen.', widget=widgets.RadioSelect) ES_9 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Wenn ich mich auf mein Bauchgefühl verlassen würde, würde ich oft Fehler machen.', widget=widgets.RadioSelect) ES_10 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich mag keine Situationen, in denen ich mich auf meine Intuition verlassen muss.', widget=widgets.RadioSelect) ES_11 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich denke, es gibt Zeiten, in denen man sich auf seine Intuition verlassen sollte.', widget=widgets.RadioSelect) ES_12 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich denke, es ist töricht, wichtige Entscheidungen auf der Grundlage von Gefühlen zu treffen.', widget=widgets.RadioSelect) ES_13 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich glaube nicht, dass es eine gute Idee ist, sich bei wichtigen Entscheidungen auf seine Intuition zu verlassen.', widget=widgets.RadioSelect) ES_14 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich verlasse mich im Allgemeinen nicht auf meine Gefühle, um Entscheidungen zu treffen.', widget=widgets.RadioSelect) ES_15 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich mache fast nie etwas falsch, wenn ich auf mein tiefstes Bauchgefühl höre, um eine Antwort zu finden.', widget=widgets.RadioSelect) ES_16 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich würde mich nicht auf jemanden verlassen wollen, der sich selbst als intuitiv bezeichnet.', widget=widgets.RadioSelect) ES_17 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Meine ersten Eindrücke sind wahrscheinlich nicht so gut wie die der meisten Menschen.', widget=widgets.RadioSelect) ES_18 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich neige dazu, mein Herz als Leitfaden für mein Handeln zu benutzen.', widget=widgets.RadioSelect) ES_19 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich spüre in der Regel, ob jemand richtig oder falsch liegt, auch wenn ich nicht erklären kann, woher ich das weiß.', widget=widgets.RadioSelect) ES_20 = models.IntegerField(choices=[[1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5']], label='Ich vermute, dass meine Ahnungen so oft ungenau sind, wie sie richtig sind.', widget=widgets.RadioSelect) Verstaendnis_der_Regel = models.IntegerField(choices=[[1, 'sehr gut'], [2, 'gut'], [3, 'geht so'], [4, 'nicht so gut'], [5, 'überhaupt nicht'], [6, 'keine Angabe']], label='Wie gut haben Sie die benutzte Wahlregel verstanden?', widget=widgets.RadioSelect) class Anfang_Fragebogen(Page): form_model = 'player' class HL(Page): form_model = 'player' form_fields = ['HL_1', 'HL_2', 'HL_3', 'HL_4', 'HL_5', 'HL_6', 'HL_7', 'HL_8', 'HL_9', 'HL_10'] @staticmethod def vars_for_template(player: Player): return dict( f1 = C.LOTTERIE_A_1, f2 = C.LOTTERIE_A_2, f3 = C.LOTTERIE_B_1, f4 = C.LOTTERIE_B_2) @staticmethod def before_next_page(player: Player, timeout_happened): participant = player.participant import random player.participant.vars['HL_row'] = random.randint(1,10) player.participant.vars['HL_random'] = random.randint(1,10) choices = [player.HL_1,player.HL_2,player.HL_3,player.HL_4,player.HL_5,player.HL_6,player.HL_7,player.HL_8,player.HL_9,player.HL_10] player.participant.vars['HL_choice'] = choices[player.participant.vars['HL_row']-1] if player.participant.vars['HL_random'] <= player.participant.vars['HL_row']: if player.participant.vars['HL_choice'] ==1: player.participant.vars['payoff_HL'] = C.LOTTERIE_A_1 else : player.participant.vars['payoff_HL'] = C.LOTTERIE_B_1 else: if player.participant.vars['HL_choice'] == 1 : player.participant.vars['payoff_HL'] = C.LOTTERIE_A_2 else : player.participant.vars['payoff_HL'] = C.LOTTERIE_B_2 player.payoff = player.participant.vars['payoff_HL']*10 class Ergebnisse_HL(Page): form_model = 'player' @staticmethod def vars_for_template(player: Player): participant = player.participant return dict( payoff_HL = player.participant.vars['payoff_HL'], row = player.participant.vars['HL_row'], value = player.participant.vars['HL_random'], choice = player.participant.vars['HL_choice'], p_A_1 = player.participant.vars['HL_row'], p_A_2 = 10-player.participant.vars['HL_row'], p_B_1 = player.participant.vars['HL_row'], p_B_2 = 10-player.participant.vars['HL_row']) class Rational_Scale_1(Page): form_model = 'player' form_fields = ['RS_1', 'RS_2', 'RS_3', 'RS_4', 'RS_5', 'RS_6', 'RS_7', 'RS_8', 'RS_9', 'RS_10'] class Rational_Scale_2(Page): form_model = 'player' form_fields = ['RS_11', 'RS_12', 'RS_13', 'RS_14', 'RS_15', 'RS_16', 'Aufmerksamkeitskontrolle', 'RS_17', 'RS_18', 'RS_19', 'RS_20'] class Experientiality_Scale_1(Page): form_model = 'player' form_fields = ['ES_1', 'ES_2', 'ES_3', 'ES_4', 'ES_5', 'ES_6', 'ES_7', 'ES_8', 'ES_9', 'ES_10'] class Experientiality_Scale_2(Page): form_model = 'player' form_fields = ['ES_11', 'ES_12', 'ES_13', 'ES_14', 'ES_15', 'ES_16', 'ES_17', 'ES_18', 'ES_19', 'ES_20', 'Wahrheitsgemaesse_Antworten'] class DemographischeDaten(Page): form_model = 'player' form_fields = ['Alter', 'Geschlecht', 'Studiengang', 'Verstaendnis_der_Regel', 'Nash', 'Kenntnisse', 'Erfahrung'] class Freitext(Page): form_model = 'player' form_fields = ['Beweggruende', 'Abstimmungsgruende', 'Kommentare'] class Payoffs(Page): form_model = 'player' @staticmethod def vars_for_template(player: Player): participant = player.participant import math auszahlung_fragen = participant.richtige_antworten *5 + participant.richtige_antworten_2 *5 payoff_HL = float(player.participant.vars['payoff_HL']) payoff_HL = math.ceil(payoff_HL*100)/100 auszahlung_experiment = participant.payoff - (float(player.participant.vars['payoff_HL'])*10) auszahlung_experiment2 = float(participant.payoff)/10 - float(player.participant.vars['payoff_HL']) auszahlung_experiment2 = math.floor(auszahlung_experiment2*100)/100 auszahlung_experiment5 = float(participant.payoff)/10 - float(player.participant.vars['payoff_HL']) auszahlung_experiment5 = auszahlung_experiment5*100 if auszahlung_experiment5 - math.floor(auszahlung_experiment5) < 0.5: auszahlung_experiment5 = math.floor(auszahlung_experiment5) if auszahlung_experiment5 - math.floor(auszahlung_experiment5) >= 0.5: auszahlung_experiment5 = math.ceil(auszahlung_experiment5) auszahlung_experiment5 = auszahlung_experiment5/100 auszahlung_EUR = auszahlung_experiment5 + payoff_HL + 4 auszahlung_EURO = float(participant.payoff)/10 + 4 auszahlung_EURO = auszahlung_EURO*100 if auszahlung_EURO - math.floor(auszahlung_EURO) < 0.5: auszahlung_EURO = math.floor(auszahlung_EURO) if auszahlung_EURO - math.floor(auszahlung_EURO) >= 0.5: auszahlung_EURO = math.ceil(auszahlung_EURO) auszahlung_EURO = auszahlung_EURO/100 richtig = participant.richtige_antworten + participant.richtige_antworten_2 return dict( auszahlung_fragen = auszahlung_fragen, payoff_HL = payoff_HL, auszahlung_experiment = auszahlung_experiment, auszahlung_experiment2 = auszahlung_experiment2, auszahlung_experiment5 = auszahlung_experiment5, auszahlung_EURO = auszahlung_EURO, richtig = richtig, auszahlung_EUR = auszahlung_EUR ) class Ende_und_Auszahlungslink(Page): form_model = 'player' @staticmethod def vars_for_template(player: Player): participant = player.participant return dict( auszahlung_EURO = float(participant.payoff)/10 +6,) page_sequence = [Anfang_Fragebogen, HL, Ergebnisse_HL, Rational_Scale_1, Rational_Scale_2, Experientiality_Scale_1, Experientiality_Scale_2, DemographischeDaten, Freitext, Payoffs, Ende_und_Auszahlungslink]