python心理学实验程序
使用psychopy做了个小实验。
任务主要包括:选词任务;呈现图片和字母,对字母进行判断;选数任务。
选词任务:10个词语呈现顺序随机,选择其中3个。
字母判断任务:字母Q或O出现在图片的左边或右边,判断字母为哪个。20张图片字母q/o字母位置左右 = 80种条件。80种随机,同时不能连续呈现一样的图片。
选数任务:从1-7选择一个数字。
程序中涉及实验材料的部分被省略。
本实验的pygame版本在我的另一篇文章中
pygame写的程序可以很方便地打包为exe程序,
而psychopy写的程序打包时总会遇到各种问题。
(欢迎读者与我交流)
# import libraries
import random, base64
from psychopy import visual, core, event
# some constants
left = (-210, 0)
right = (210, 0)
center = (0, 0)
grey = (0, 0, 0)
# trial lists
group_list = ['11', '12', '22', '21']
wordtrials = [] # 10个供挑选的词语
letter_trials = [['L', 'Q'],
['L', 'O'],
['R', 'Q'],
['R', 'O']]
ele7 = # 先将图片转为base64 编码的字节,再存放在代码中,之后便不需要调用图片。
ele27 =
sex3 =
sex15 =
……
pictrials_prac = [[ele7, 'ele', '7'],
[ele27, 'ele', '27'],
[sex3, 'sex', '3'],
[sex15, 'sex', '15']]
pictrials = [[ele2, 'ele', '2'], [ele3, 'ele', '3'],
[ele4, 'ele', '4'], [ele6, 'ele', '6'],
[ele10, 'ele', '10'],
[ele11, 'ele', '11'],
[ele16, 'ele', '16'],
[ele19, 'ele', '19'],
[ele26, 'ele', '26'],
[ele29, 'ele', '29'],
[sex7, 'sex', '7'],
[sex8, 'sex', '8'],
[sex10, 'sex', '10'],
[sex13, 'sex', '13'],
[sex14, 'sex', '14'],
[sex21, 'sex', '21'],
[sex22, 'sex', '22'],
[sex26, 'sex', '26'],
[sex28, 'sex', '28'],
[sex30, 'sex', '30']]
# some functions
# get subject info
def get_subj_info():
print('请输入被试信息并按回车键')
subj_id = input('编号: ')
subj_group = input('组: ')
while subj_group not in group_list:
subj_group = input('组(刚刚的输入不符合要求,请重新输入): ')
subj_age = input('年龄: ')
return [subj_id, subj_group, subj_age]
# run a single trial
def run_pictrial(pars, letter_pars, data_file, subj_info):
file, catog, num= pars
l, letter = letter_pars
if l == 'R': loc = right
if l == 'L': loc = left
# present the fixation
text_msg.setText('+')
text_msg.setPos((0, 0))
text_msg.height = 50
text_msg.draw()
win.flip()
core.wait(1)
# present the pic
img_data = base64.b64decode(file)
with open('001.jpg', 'wb') as f:
f.write(img_data)
pic = visual.ImageStim