Отформатированная строка из списка Psychopy
Моя задача - это вариант задачи отслеживания нескольких объектов. На экране 7 кругов. Он случайным образом выбирает 3 круга, чтобы ненадолго изменить цвет (красный, зеленый, синий), чтобы указать участнику отслеживать эти круги. После изменения цвета все круги изменятся на один и тот же цвет, и круги будут двигаться в течение определенного периода времени. Когда круги перестают двигаться, появится ответная подсказка, в которой участник должен выбрать один из трех цветных кругов ("выберите красный / зеленый / синий круг"). У меня возникают трудности при вставке выбранного цветового круга в форматированную строку. Я получаю сообщение об ошибке: неподдерживаемые типы операндов для%: 'TextStim' и 'list'
Я не уверен, если мне нужно или как преобразовать эти списки, поэтому любая помощь будет высоко ценится!
n_targets = 7 #seven locations
circles = [] #setting up the circle stimuli
for i in range(n_targets):
tmp = visual.Circle(win,radius = 27,units = 'pix',edges = 32,fillColor='white',lineColor = 'black',lineWidth = 1, pos=(posx[i],posy[i]))
circles.append(tmp)
cols = ['blue','red','green'] #3 colors the circles will change to
targets = random.sample(circles,3) #randomly select 3 of the 7 circles
TrialTarget = random.sample(targets, 1) #select 1 of the 3 circles to be the target for the trial
#code for movement would go here (skipping since it is not relevant)
#at end of trial, response prompt appears and ask user to select target and is where error occurs
ResponsePrompt = visual.TextStim(win, text = "Select the %s circle") %TrialTarget
1 ответ
В этой строке вы пытаетесь создать отформатированную строку из объекта TextStim и объекта-стимула "Круг", а не объекта строки и другого объекта строки:
ResponsePrompt = visual.TextStim(win, text = "Select the %s circle") %TrialTarget
т.е. ResponsePrompt
явно визуальный.TextStim, так как вы создаете его как единое целое, и я думаю, TrialTarget
является визуальным. Круговой стимул, как вы случайным образом выбираете его из списка кругов.
Я предполагаю, что вы действительно хотите включить цветную метку в текст подсказки. Таким образом, чтобы устранить обе проблемы (несовместимость типов и синтаксис форматирования), вам необходимо получить один из элементов: cols
позвонил сказать trialColour
и используйте что-то вроде этого:
ResponsePrompt = visual.TextStim(win, text = "Select the %s circle" % trialColour)
т.е. здесь trialColour
на самом деле является строкой, и операция форматирования переносится в скобках, поэтому она применяется непосредственно к текстовой строке "Select the %s circle"
Надеюсь, это должно исправить вашу непосредственную проблему. Вы могли бы также хотеть исследовать, используя random.shuffle()
перетасовать списки вместо random.sample()
,