from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'grading_task' players_per_group = None num_rounds = 60 completion_code = "COMPLETE123" #misses = open("mistakes.txt", "w") #misses.write("") #corrects = open("corrects.txt", "w") #corrects.write("") import csv with open('grading_app/Grading_v3.csv', encoding='utf-8') as file: rows = list(csv.DictReader(file)) data = rows[0] # initialize time import time startTime = time.time() #timeMark = open("startTime.txt", "w") timeIncriment = 60 #timeMark.write(str(timeIncriment)) #timeMark.close() #yaxis = open("yaxis.txt", "w") #yaxis.write("") #yaxis.close() class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): def get_line(self): x = Constants.data return x['Q1'] def CountMistakes(self, user_input, answer_key): mistakes = 0 try: len(user_input) except: user_input = "" if len(user_input) > len(answer_key): tracker = len(user_input) else: tracker = len(answer_key) for i in range(tracker): try: if user_input[i] != answer_key[i]: mistakes += 1 except: mistakes += 1 cor = len(answer_key) - mistakes filename = "corrects" + str(self.id_in_group) + ".txt" corrects = open(filename, "a") corrects.write(str(cor) + ",") filename = "mistakes" + str(self.id_in_group) + ".txt" misses = open(filename, "a") misses.write(str(mistakes) + ",") def CalculateAmount(self): filename = "mistakes" + str(self.id_in_group) + ".txt" misses = open(filename, "r") filename = "corrects" + str(self.id_in_group) + ".txt" corrects = open(filename, "r") misses = misses.read() corrects = corrects.read() misses = misses.split(",") del misses[-1] corrects = corrects.split(",") del corrects[-1] misNum = 0 for i in misses: i = int(i) misNum += i corNum = 0 for i in corrects: i = int(i) corNum += i misAm = misNum * 0.0074 corAm = corNum * 0.00185 earnedAmount = corAm - misAm return earnedAmount line1 = models.StringField( label="Line 1:", doc="""Amount sent by P1""", blank=True ) line2 = models.StringField( label="Line 2:", doc="""Amount sent by P2""", blank=True ) line3 = models.StringField( label="Line 3:", doc="""Amount sent by P3""", blank=True ) line4 = models.StringField( label="Line 4:", doc="""Amount sent by P4""", blank=True ) line5 = models.StringField( label="Line 5:", doc="""Amount sent by P5""", blank=True ) #MistakesPerScreen = models.StringField() #ScreenTimeString = models.StringField() Tally = models.IntegerField(initial=0)