从编码器中的变量输出数据

时间:2015-09-18 17:09:20

标签: psychopy

我在PsychoPy工作,设计实验。它几乎完成了,但是我试图将我在代码组件中创建的一些变量输出到我的数据文件中进行实验,我还没有弄清楚怎么做那。以下是一些相关代码:

if branch == 1:
    if money.keys == 'left':
        feedback = 'You chose $10 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 $10 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'。我尝试了一些事情,但似乎并没有我接近。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用当前实验处理程序的thisExp方法(默认情况下在Builder中名为# specify each column name and its associated variable: thisExp.addData('TotalLater', TotalLater) thisExp.addData('TotalNow', TotalNow) thisExp.addData('amount', amount)

scanf("%d",n);
           ^ & missing 

在相关例程结束时执行此操作以保存该试验的当前值。

答案 1 :(得分:0)

如果您喜欢编写自己的代码,并希望学习更多的Python,请查看将字符存储为" key"和"价值"对。你从某个地方开始是程序的开始,用你想要的所有键创建字典,然后在程序运行时将值存储在字典中。在第一次试用之前,您可以使用函数将键写为电子表格的列标题,然后每个试验都会添加带有值的行。例如:

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)

以下是字典中的一些示例行,我在其中设置了expriments条件的值,请注意,其中一些行具有键,其中值是另一个字典 - 字典是嵌套的。

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()将最新值放在电子表格中的正确位置。

我知道这比上面更详细,更不直观,但你可以在很多地方使用词典,而且它们非常方便。

由于我一直在剪切和粘贴我们的文件,上面的代码可能不会为您开箱即用,但希望能为您自己的探索提供一些有用的指南。