2016-11-22 3 views
1

私はランダムにいくつかのタプルを生成し、ビットマップイメージを作成するためにそれらをリストに追加するプログラムを持っています。 問題は、私はエラーを取得しておくことです。Python関数がグローバルリストを認識しない

from random import randint 
from PIL import Image 

startPixel = (0, 0) 
pixelList = [startPixel] 
print(pixelList[-1]) 
print(pixelList[-1][0]) 
i = j = 0 
#Replace 0 with timestamp for seed 
t = 0 


def nextPixel(i, j, t): 
    #Random from seed 
    iNew = i + randint(0, 2) 
    #Random from -seed 
    jNew = j + randint(0, 2) 
    if iNew == jNew: 
     jNew = (jNew + 1) % 2 
    iNew -= 1 
    jNew -= 1 
    #Checks pixel created does not already exist in the list 
    if (iNew, jNew) not in pixelList: 
     pixelList += (iNew, jNew) 

while pixelList[-1][0] < 255: 
    nextPixel((pixelList[-1])[0], (pixelList[-1])[1], t) 

任意の提案:

Traceback (most recent call last): File "/Users/Chill/Desktop/Untitled.py", line 27, in <module> 
    nextPixel((pixelList[-1])[0], (pixelList[-1])[1], t,) File "/Users/Chill/Desktop/Untitled.py", line 23, in nextPixel 
    if (i, j) not in pixelList: UnboundLocalError: local variable 'pixelList' referenced before assignment [Finished in 0.078s] 

ここでは、コードのですか?

+0

あなたnextPixel機能の開始時に「グローバルpixelList」を追加します。あなたが代わりに行うに必要なもの

はこれです。プログラミングの王は、しかし、通常、非常にエレガントな考えではありません。 –

答えて

0

pixelListはタプルのリストであり、nextPixel関数は新しいタプルを追加することを意味するようです。しかし、行:

pixelList += (iNew, jNew) 

は実際にCONCATENATE新しいタプルとリストしようとしています。増強された割り当てでpixelListローカル変数(これは存在しないため、エラーになります)として扱うため、これは機能しません。

pixelList.append((iNew, jNew)) 
関連する問題