Python 2.7 如何修复';非类型';对象不可下标';while循环中的错误

Python 2.7 如何修复';非类型';对象不可下标';while循环中的错误,python-2.7,while-loop,anaconda,psychopy,Python 2.7,While Loop,Anaconda,Psychopy,视窗10 Python 3.7 巨蟒1.9.7 Spyder 3.3.3 Python2.7版的PsychoPy 我正在编写一个实验,需要以随机顺序呈现图像,让参与者做出反应。我能够在一个数组中获取图像,但是为了一次呈现一个图像,我使用了一个while循环,该循环中的变量每次增加1。它没有将变量识别为数字,因此数组不能调用任何东西 我试着不随机化变量,看看这是否是问题所在,但似乎我的变量I没有被解读为一个数字 #import packages import random, os from psy

视窗10 Python 3.7 巨蟒1.9.7 Spyder 3.3.3 Python2.7版的PsychoPy

我正在编写一个实验,需要以随机顺序呈现图像,让参与者做出反应。我能够在一个数组中获取图像,但是为了一次呈现一个图像,我使用了一个while循环,该循环中的变量每次增加1。它没有将变量识别为数字,因此数组不能调用任何东西

我试着不随机化变量,看看这是否是问题所在,但似乎我的变量I没有被解读为一个数字

#import packages
import random, os
from psychopy import core, visual, event
from PIL import Image

#setup screen with specs and draw
win = visual.Window([400, 300], monitor="testMonitor")
message = visual.TextStim(win, text="")

message.draw()
win.flip()
core.wait(3.0)

#set image size and populate array with images
stim_size = (0.8, 0.8)
image = [i for i in os.listdir('C:/Users/*/psychopy-tests') 
                    if i.endswith('.bmp')]
#randomize image order
images = random.shuffle(image)
这就是我的问题所在
random.shuffle
shuffle就地执行,不返回任何内容,即不返回任何内容

因此,
图像
为无且不可下标


当我打印出无序排列的数组时,虽然它显示它已经工作了,但我还可以使用其他功能吗?您打印了
图像
,它工作了吗?不是
图像
,而是
图像
?我单独打印图像是的,它以随机顺序返回我的图像列表。正如我刚才所说,删除随机化并没有解决“非类型”的问题。如前所述,
图像
将为无。我不明白你是怎么打印出一个无对象的。您是说您使用了
print(images)
(复数)一些其他注释:而不是这个
,而
do
用于图像中的新内容:
。然后在循环上方和循环中定义
stim.image=new
。这样会更快更安全。那么就不再需要变量
i
。我无法显示输出,但是删除
stim=visual。循环中的ImageStim(win,image,size=(stim_size))
会阻止单独打开图像。我收到错误“无法理解请求的图像”
images=random.shuffle(image)
-shuffle shuffle就位并返回None。除非您稍后将图像设置为其他内容,否则图像中不可能有任何内容。请参阅。如果您只有28个图像,请从
i=1开始,然后在i!=29:
您正在尝试执行29个图像:0,1,2,3,4,5,6,7,8,9等:0-9==10个图像,0-19==20个图像,0-28==29个图像
i = 0
while i != 29: #there are only 28 images
    
    new = images[i] #this is where the issue is
    image_stim = Image.open(new)

    stim = visual.ImageStim(win, image_stim, size = (stim_size))
    stim.draw()
    win.update()
    output = []
    if event.getKeys(keyList=['space']):
        output[i] = 1
    if event.getKeys(['escape']):
        win.close()
        core.quit()
    if event.getKeys(keyList=None):
        output[i] = 0
        core.wait(5.0)
    i = i + 1