来自 List Psychopy 的格式化字符串

Formatted String from List Psychopy

我的任务是多目标跟踪任务的变体。屏幕上有 7 个圆圈。它随机 selects 3 个圆圈来短暂地改变颜色(红色、绿色、蓝色),以指示参与者跟踪这些圆圈。颜色变化后,所有的圆圈都会变成相同的颜色,并且圆圈会移动一段时间。当圆圈停止移动时,将出现响应提示,参与者将select三个彩色圆圈之一('select the red/green/blue circle')。我很难将 which color circle to select 插入到格式化字符串中。我不断收到错误消息:% 不受支持的操作数类型:'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

在这一行中,您尝试从 TextStim 对象和 Circle 刺激对象创建格式化字符串,而不是字符串对象和另一个字符串对象:

ResponsePrompt = visual.TextStim(win, text = "Select the %s circle") %TrialTarget

ResponsePrompt 显然是一个 visual.TextStim,因为您将其创建为一个,我认为 TrialTarget 是一个 visual.Circle 刺激,因为您从圆圈列表中随机抽取它。

我猜您确实想将颜色标签合并到提示文本中。因此,要解决这两个问题(类型不兼容和格式化语法),您需要实际获取 cols 的元素之一,称为 say trialColour,并使用如下内容:

ResponsePrompt = visual.TextStim(win, text = "Select the %s circle" % trialColour)

即这里的trialColour实际上是一个字符串,格式化操作被带入括号内所以直接作用于文本字符串"Select the %s circle"

这应该有望解决您眼前的问题。您可能还想研究使用 random.shuffle() 代替 random.sample().

来随机播放列表