Python函数无法识别全局列表
问题描述:
好吧,我有一个程序会随机生成一些元组并将它们添加到列表中以用于制作位图图像。 问题是,我不断收到一个错误:Python函数无法识别全局列表
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]
这里是代码:
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)
有什么建议?
答
看起来pixelList
是一个元组列表,并且nextPixel
函数是为它添加一个新元组的意思。然而,该行:
pixelList += (iNew, jNew)
实际上是试图连击的新的元组和列表。这是行不通的,因为扩大赋值将把pixelList
当作本地变量(它不存在,导致错误)。
你需要做的,而不是这是什么:
pixelList.append((iNew, jNew))
你nextPixel函数的开头添加“全球pixelList”。尽管如此,节目之王通常不被认为是非常优雅的。 –