从编码器中的变量输出数据
Outputting data from variables in coder
我正在使用 PsychoPy 设计一个实验。它几乎完成了,但我试图将我在代码组件中创建的一些变量输出到我的数据文件中以进行实验,但我一直无法弄清楚如何做到这一点。这是一些相关代码:
if branch == 1:
if money.keys == 'left':
feedback = 'You chose immediately'
TotalNow = TotalNow + 10
add = (amount - 10)/2
amount = add + amount
elif money.keys == 'right':
feedback = 'You chose $%.2f in two weeks' %(amount)
TotalLater = TotalLater + amount
TLtext = '%.2f' %(TotalLater)
amount = (amount + 10)/2
elif money.keys in ['', [], None]:
feedback = 'You did not make a choice. No reward given.'
amount = amount
if branch == 2:
if money.keys == 'right':
feedback = 'You chose immediately'
TotalNow = TotalNow + 10
add = (amount - 10)/2
amount = add + amount
elif money.keys == 'left':
feedback = 'You chose $%.2f in two weeks' %(amount)
TotalLater = TotalLater + amount
TLtext = '%.2f' %(TotalLater)
amount = (amount + 10)/2
elif money.keys in ['', [], None]:
feedback = 'You did not make a choice. No reward given.'
amount = amount
我想将以下变量输出到数据文件中:'TotalLater'、'TotalNow' 和 'amount'。我已经尝试了一些东西,但似乎我还没有接近。任何帮助将不胜感激。
使用当前实验处理程序的addData()
方法(在Builder中默认命名为thisExp
:
# specify each column name and its associated variable:
thisExp.addData('TotalLater', TotalLater)
thisExp.addData('TotalNow', TotalNow)
thisExp.addData('amount', amount)
在相关例程结束时执行此操作以保存该试验的当前值。
如果您喜欢编写自己的代码,并想多学一点 Python,请查看将内容存储为 "key" 和 "value" 对的字典。你从某个地方开始,这是你的程序的开始,用你想要的所有键创建字典,然后当程序运行时,你将值存储在字典中。在第一次试验之前,您可以使用函数将键写为电子表格的列标题,然后每次试验都添加带有值的行。例如:
import csv ; #to use the spreadsheet export
def createDataFile(fh,d):
#fh is the handle for a file you created
#d is the name of the dictionary you have created
cdw = csv.DictWriter(fh,fieldnames = d.keys(),quoting = csv.QUOTE_MINIMAL)
cdw.writeheader()
return(cdw)
下面是字典中的一些示例行,我在其中设置实验条件的值,请注意,其中一些行具有键,其中值是另一个字典 - 字典是嵌套的。
dty['tstX'] = dty['xoffset']['r']
dty['cbCon'] = dict(r = dty['tstCon'], l = dty['stdCon'])
dty['cbOri'] = dict(r = dty['tstStrOri'], l = dty['stdStrOri'])
dty['stdX'] = dty['xoffset']['l']
在您的情况下,您将拥有 dty['amt'] = amount
的值,并且在试验结束时,您将使用函数 writerow()
将最新值放在电子表格中的正确位置。
我知道这比上面的更详细,也更不直观,但是你可以在很多地方使用字典,而且它们非常方便。
由于我一直在从我们的文件中剪切和粘贴,因此上面的代码可能无法立即为您工作,但希望能为您自己的探索提供一些有用的指南。
我正在使用 PsychoPy 设计一个实验。它几乎完成了,但我试图将我在代码组件中创建的一些变量输出到我的数据文件中以进行实验,但我一直无法弄清楚如何做到这一点。这是一些相关代码:
if branch == 1:
if money.keys == 'left':
feedback = 'You chose immediately'
TotalNow = TotalNow + 10
add = (amount - 10)/2
amount = add + amount
elif money.keys == 'right':
feedback = 'You chose $%.2f in two weeks' %(amount)
TotalLater = TotalLater + amount
TLtext = '%.2f' %(TotalLater)
amount = (amount + 10)/2
elif money.keys in ['', [], None]:
feedback = 'You did not make a choice. No reward given.'
amount = amount
if branch == 2:
if money.keys == 'right':
feedback = 'You chose immediately'
TotalNow = TotalNow + 10
add = (amount - 10)/2
amount = add + amount
elif money.keys == 'left':
feedback = 'You chose $%.2f in two weeks' %(amount)
TotalLater = TotalLater + amount
TLtext = '%.2f' %(TotalLater)
amount = (amount + 10)/2
elif money.keys in ['', [], None]:
feedback = 'You did not make a choice. No reward given.'
amount = amount
我想将以下变量输出到数据文件中:'TotalLater'、'TotalNow' 和 'amount'。我已经尝试了一些东西,但似乎我还没有接近。任何帮助将不胜感激。
使用当前实验处理程序的addData()
方法(在Builder中默认命名为thisExp
:
# specify each column name and its associated variable:
thisExp.addData('TotalLater', TotalLater)
thisExp.addData('TotalNow', TotalNow)
thisExp.addData('amount', amount)
在相关例程结束时执行此操作以保存该试验的当前值。
如果您喜欢编写自己的代码,并想多学一点 Python,请查看将内容存储为 "key" 和 "value" 对的字典。你从某个地方开始,这是你的程序的开始,用你想要的所有键创建字典,然后当程序运行时,你将值存储在字典中。在第一次试验之前,您可以使用函数将键写为电子表格的列标题,然后每次试验都添加带有值的行。例如:
import csv ; #to use the spreadsheet export
def createDataFile(fh,d):
#fh is the handle for a file you created
#d is the name of the dictionary you have created
cdw = csv.DictWriter(fh,fieldnames = d.keys(),quoting = csv.QUOTE_MINIMAL)
cdw.writeheader()
return(cdw)
下面是字典中的一些示例行,我在其中设置实验条件的值,请注意,其中一些行具有键,其中值是另一个字典 - 字典是嵌套的。
dty['tstX'] = dty['xoffset']['r']
dty['cbCon'] = dict(r = dty['tstCon'], l = dty['stdCon'])
dty['cbOri'] = dict(r = dty['tstStrOri'], l = dty['stdStrOri'])
dty['stdX'] = dty['xoffset']['l']
在您的情况下,您将拥有 dty['amt'] = amount
的值,并且在试验结束时,您将使用函数 writerow()
将最新值放在电子表格中的正确位置。
我知道这比上面的更详细,也更不直观,但是你可以在很多地方使用字典,而且它们非常方便。
由于我一直在从我们的文件中剪切和粘贴,因此上面的代码可能无法立即为您工作,但希望能为您自己的探索提供一些有用的指南。