我的任务是多对象跟踪任务的变体。屏幕上有7个圆圈。它随机选择3个圆圈以短暂地改变颜色(红色,绿色,蓝色)以指示参与者跟踪这些圆圈。颜色变化后,所有圆圈将变为相同颜色,圆圈将移动一段时间。当圆圈停止移动时,将出现响应提示,参与者将选择三个彩色圆圈中的一个('选择红色/绿色/蓝色圆圈')。我无法插入哪个色圈来选择格式化的字符串。我不断收到错误消息:%:' TextStim'不支持的操作数类型和'列出'
我不确定我是否需要或如何转换这些列表,所以我们非常感谢您的帮助!
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
答案 0 :(得分:0)
在这一行中,您试图从TextStim对象和Circle刺激对象而不是字符串对象和另一个字符串对象创建格式化字符串:
hello
world
second
arg
3rdarg
即。 ResponsePrompt = visual.TextStim(win, text = "Select the %s circle") %TrialTarget
显然是visual.TextStim,因为你将它创建为一个,我认为ResponsePrompt
是一个visual.Circle刺激,当你从一个圆圈列表中随机抽样时。
我猜你实际上想要将颜色标签合并到提示文本中。因此,为了解决这两个问题(类型不兼容和格式化语法),您需要实际获取TrialTarget
的一个元素,称为cols
,并使用以下内容:
trialColour
即。这里ResponsePrompt = visual.TextStim(win, text = "Select the %s circle" % trialColour)
实际上是一个字符串,格式化操作被放在括号内,因此它直接应用于文本字符串trialColour
这应该有希望解决您的直接问题。您可能还想调查使用"Select the %s circle"
来调整列表,而不是random.shuffle()
。