Oke, ik wil met Python (en Boto, de uitbreiding voor Amazon Webservices (AWS)) iets programmeren voor Mechanical Turk. Het is mijn eerste keer Python, ik ben een heel eind gekomen alleen strand ik nu toch.
Het probleem is het volgende:
Ik wil een vragenlijst maken met meerdere radiobuttons in mTurk. Als ik 1 radiobutton programmeer gaat alles goed, zodra ik er een 2e inzet krijg ik een error en ik begrijp net waar dit vandaan komt.
Mijn code:
BOTO Code waar de foutmelding gebeurd
Foutmelding
Het probleem is het volgende:
Ik wil een vragenlijst maken met meerdere radiobuttons in mTurk. Als ik 1 radiobutton programmeer gaat alles goed, zodra ik er een 2e inzet krijg ik een error en ik begrijp net waar dit vandaan komt.
Mijn code:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| from boto.mturk.connection import MTurkConnection from boto.mturk.question import QuestionContent,Question,QuestionForm,Overview,AnswerSpecification,SelectionAnswer,FormattedContent,FreeTextAnswer ACCESS_ID = 'MIJNACCESID' SECRET_KEY = 'MIJNSECRETKEY' HOST = 'mechanicalturk.sandbox.amazonaws.com' mtc = MTurkConnection(aws_access_key_id=ACCESS_ID, aws_secret_access_key=SECRET_KEY, host=HOST) overview = Overview() overview.append_field('Title', 'Please fill out the following questionnaire.') qf = QuestionForm() qf.append(overview) gender =[('Male','0'), ('Female','1'),] race =[('Afro American','0'), ('White American'),'1'] qcontent = QuestionContent() qcontent.append_field('Title', 'What is your gender?') form = SelectionAnswer(min=1, max=1, style='radiobutton', selections=gender, type='text', other=False) q1 = Question(identifier='genderquestion1', content=qcontent, answer_spec=AnswerSpecification(form), is_required=True) qf.append(q1) qcontent = QuestionContent() qcontent.append_field('Title', 'What is your name?') form = SelectionAnswer(min=1, max=1, style='dropdown', selections=race, type='text', other=False) q2 = Question(identifier='namequestion1', content=qcontent, answer_spec=AnswerSpecification(form), is_required=False) qf.append(q2) mtc.create_hit(question=qf, max_assignments=1, title='Demographical info', description='Fill out your demographical information to acquire the qualification', keywords='qualification, psych', reward=0.05) |
BOTO Code waar de foutmelding gebeurd
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| def get_as_xml(self): if self.type == 'text': TYPE_TAG = "Text" elif self.type == 'binary': TYPE_TAG = "Binary" else: raise ValueError("illegal type: %s; must be either 'text' or 'binary'" % str(self.type)) # build list of <Selection> elements selections_xml = "" for tpl in self.selections: value_xml = SelectionAnswer.SELECTION_VALUE_XML_TEMPLATE % (TYPE_TAG, tpl[0], TYPE_TAG) selection_xml = SelectionAnswer.SELECTION_XML_TEMPLATE % (tpl[1], value_xml) selections_xml += selection_xml |
Foutmelding
code:
1
2
3
| File "C:\Python27\lib\site-packages\boto-2.2.2-py2.7.egg\boto\mturk\question.py", line 376, in get_as_xml selection_xml = SelectionAnswer.SELECTION_XML_TEMPLATE % (tpl[1], value_xml) IndexError: string index out of range |