2015-09-18 2 views
1

Я работаю в 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» и «количество». Я пробовал несколько вещей, но мне кажется, что я не близка. Любая помощь будет оценена по достоинству.

ответ

1

Используйте addData() метод текущего обработчика эксперимента (который по умолчанию с именем thisExp в Builder:.

# specify each column name and its associated variable: 
thisExp.addData('TotalLater', TotalLater) 
thisExp.addData('TotalNow', TotalNow) 
thisExp.addData('amount', amount) 

сделать это в конце соответствующей подпрограммы для сохранения текущих значений для этого суда

0

Если вам нравится писать свой собственный код и вы хотите узнать немного больше Python, изучите словари, в которых хранятся вещи как пары «ключ» и «значение». Вы начинаете с чего-то в начале своей программы, чтобы создать словарь со всеми нужные вам ключи, а затем, когда программа запускается, вы сохраняете значения в словаре. B перед первым испытанием вы можете использовать функцию для записи ключей в виде заголовков столбцов электронной таблицы, а затем каждая пробная строка добавляет строки со значениями. Например:

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() поставить последние значения в нужном месте в таблице.

Я знаю, что это намного более подробно и менее интуитивно понятный, чем предыдущий, но вы можете использовать словари во многих местах, и они довольно просты.

Поскольку я вырезал и вставлял из нашего файла, приведенный выше код, скорее всего, не будет работать из коробки для вас, но, мы надеемся, предоставит вам некоторые полезные справочные сообщения для ваших собственных исследований.