来自 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()
.
来随机播放列表
我的任务是多目标跟踪任务的变体。屏幕上有 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()
.