首页 编程教程正文

心理学实验(测量反应时)

piaodoo 编程教程 2020-02-22 22:14:42 1288 0 python教程

本文来源吾爱破解论坛

本帖最后由 youpc529 于 2019-12-27 13:41 编辑

虽然高校里面有测量反应时的设备,但是还是自己用python写了一个,感兴趣的可以玩玩。
反应时(reaction time,简称 RT)是心理学中最常用的反应变量之—,它是指刺激施于有机体之后到明显反应开始所需要的时间。实验分为简单反应时和选择反应时。简单反应时是指对呈现的单一的刺激,只作单一的反应;选择反应时就是根据不同的刺激物,在多种反应方式中选择符合要求的。
实验界面如下:

1.png (36.63 KB, 下载次数: 0)

下载附件  保存到相册

2019-12-27 13:39 上传

2.png (53.26 KB, 下载次数: 0)

下载附件  保存到相册

2019-12-27 13:39 上传


实验已打包成exe文件,链接在此,链接:https://pan.baidu.com/s/1V-7v-oLchFOEBhKgatjRrw
提取码:9ipd
具体代码如下:
[Python] 纯文本查看 复制代码
from tkinter import *
import random
import time
from numpy import *

#反应时实验呈现刺激
test_text=['C','V','B','N','C','V','B','N','C','V','B','N','C','V','B','N','C','V','B','N']
random.shuffle(test_text)
#指导语
direct_text = """说明:
1、反应时(reaction time,简称 RT)是心理学中最常用的反
应变量之—,它是指刺激施于有机体之后到明显反应开始所需
要的时间。实验分为简单反应时和选择反应时。
2、简单反应时是指对呈现的单一的刺激,只作单一的反应,一
旦看到屏幕上出现字母‘A’,就迅速按下‘A’键;
选择反应时就是根据不同的刺激物,在多种反应方式中选择符合
要求的。看到出现的字母'CVBN'后,迅速按下相应的字母按键。
3、请先填写您的姓名和性别,填写完成后按下Caps Lock键!"""
#反应按键、刺激呈现和反应时间、正确反应的时间列表
rea_list=[]
sti_time=[]
rea_time=[]
correct_time=[]
#捕获键盘按键
def press_key(event):
    react_time=round(time.time(),3)
    rea_time.append(react_time)
    print(event.char)
    rea_list.append(event.char)
    react_v.set(event.char)
#刺激呈现
def stimulation(sti_text,show_time):
    l=Label(frame3,text=sti_text,width=50,height=20,bg='black',fg='white')
    l.pack()
    showtime=round(time.time(),3)
    if sti_text in test_text:
        sti_time.append(showtime)
    root.update()
    root.after(show_time)
    l.pack_forget()
#反应正确数量和时间的统计和输出
def react_statistics():
    if len(test_text)==len(rea_list):
        result_v.set('您完整的做完了实验!')
        count=0
        for i in range(20):
            if test_text[i]==rea_list[i]:
                count+=1
                time_delta=rea_time[i]-sti_time[i]
                print(time_delta)
                correct_time.append(time_delta)
                react_ave=round(mean(correct_time),3)
        count_v.set(count)
        time_v.set(react_ave)
    else:
        count_v.set('无')
        time_v.set('无')
        result_v.set('您没有全部做出反应!')
#简单反应时
def simple_sti():
    stimulation('预备',2000)
    for i in range(20):
        stimulation('A',1000)
        random_time=random.randint(1000,6000)
        stimulation('',random_time)        
    l=Label(frame3,text='实验结束',width=50,height=20,bg='black',fg='white')
    l.pack()
    react_statistics()
#选择反应时
def choice_sti():
    stimulation('预备',2000)
    result_v.set('实验正在进行中!')
    for i in test_text:
        stimulation(i,1000)
        random_time=random.randint(1000,6000)
        stimulation('',random_time)              
    l=Label(frame3,text='实验结束',width=50,height=20,bg='black',fg='white')
    l.pack()
    react_statistics()
#界面创建
root=Tk()
root.iconbitmap(r'C:\Users\Administrator\Desktop\ready\pika.ico')
root.title('心理学实验系列')
root.resizable(0,0)
#键盘事件
root.focus_set()
root.bind("<Key>", press_key)
#变量值跟踪
var_list=['count_v','time_v','react_v','result_v']
for i in var_list:
    locals()[i]=StringVar()
#创建框架
for i in range(1,6):
    locals()['frame'+str(i)]=Frame(root)
    locals()['frame'+str(i)].pack()
#创建标签、按钮、输入框
title_l=Label(frame1,text = '反应时实验',fg='red')
title_l.pack()
Label(frame1,text = direct_text,justify=LEFT).pack()
for i in ['姓名:','性别:']:
    Label(frame1,text = i).pack(side='left')
    Entry(frame1).pack(side='left')
Button(frame2,text='简单反应时',width=24,command=simple_sti).pack(side='left')
Button(frame2,text='选择反应时',width=24,command=choice_sti).pack(side='left')
Label(frame3,textvariable=result_v,width=50,bg='red',fg='white').pack()
Label(frame3,textvariable=react_v,width=50,bg='red',fg='white').pack()
Label(frame4,text = '正确反应数量:',width=12).pack(side='left')
Entry(frame4,width=34,textvariable=count_v).pack(side='left')
Label(frame5,text = '平均反应时长:',width=12).pack(side='left')
Entry(frame5,width=34,textvariable=time_v).pack(side='left')
root.mainloop()




版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7912.html

搜索