def ProcessAnswers(profiles): aStats = {} for questionId in QuestionDB.getQuestionIds(): aStats[questionId] = StatContainer(questionId) for profile in profiles: for idx in range(len(profile.Answers)): aStats[profile.Answers[idx]].addWeight( float(idx)/float(len(profile.Answers))) reportTable = ReportTable("Id","Count","Score","Text") sortedStats = sorted(aStats.values()) for idx in range(128): aStat = sortedStats[len(sortedStats) - idx - 1] reportTable.addRow(aStat.getId(),aStat.getCount(),int(aStat.getScore()),QuestionDB.getText(aStat.getId())) return reportTable
def printSet(answer_set): sys.stderr.write("Set Contains %d of %d Questions\n" % (len(answer_set),len(QuestionDB.getQuestionIds()))) for questionId,answer in answer_set.iteritems(): text = QuestionDB.getText(questionId) sys.stderr.write("[%8d] Question: %s\n" % (questionId,text)) Answers = QuestionDB.getAnswers(questionId) for idx in range(len(Answers)): if idx+1 == answer.Selected: selected = "[X]" else: selected = "[ ]" if (1 << idx+1) & answer.Accepted: accepted = "[X]" else: accepted = "[ ]" sys.stderr.write("[%8d]\t%s%s %s\n" % (questionId,selected,accepted,Answers[idx])) sys.stderr.write("[%8d]\tImportance: %s\n" % (questionId,answer.Importance)) sys.stderr.write("[%8d]\tExplination: %s\n" % (questionId,answer.Explination)) sys.stderr.write("[%8d]\tRaw: (%s,%s,%s)\n" % (questionId,answer.Selected,answer.Accepted,answer.Importance))