python心理学实验程序(psychopy)

这篇博客介绍了如何利用Python的Psychopy库设计心理学实验,包括选词、字母判断和选数三个任务。实验条件精心设计,如字母判断任务确保了条件的随机性和不重复。虽然Psychopy在打包成exe时可能遇到问题,但相比pygame,它的实验设计更为专业。
摘要由CSDN通过智能技术生成

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
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值