Как исправить объект 'NoneType' не подписывается 'ошибка в цикле while - PullRequest
1 голос
/ 05 апреля 2019

Windows 10 Python 3.7 Анаконда 1.9.7 Spyder 3.3.3 PsychoPy для Python 2.7

Я кодирую эксперимент, который должен представлять изображения в случайном порядке, чтобы участник мог ответить. Я могу получить изображения в массиве, но для их представления по одному я использую цикл 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)

здесь моя проблема, кажется,

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

1 Ответ

2 голосов
/ 06 апреля 2019

random.shuffle тасуется на месте и не возвращает ничего, т. Е. Не возвращает ничего.

Для этого images Нет и не может быть подписано.

источник

...