2
def choose():
  file = pickAFile()
  pic = makePicture(file)
  return pic

def negative(pic):
  for p in getPixels(pic):
    setRed(p, 255 - getRed(p))
    setGreen(p, 255 - getGreen(p))
    setBlue(p, 255 - getBlue(p))
  explore(pic)

def main():
  choose()
  negative(pic)

我收到此错误:

错误是:全局找不到图片名称。找不到本地或全局名称。在尝试以任何方式使用它之前,您需要定义函数或变量。请检查 C:\Users\nh_2109\Desktop\s 的第 15 行

帮忙?:D

4

3 回答 3

1

您尚未pic在 main 方法中定义。

def main():
   pic = choose()
   negative(pic)

可能是您想要的,因为choose()返回了一个Pic类的实例。

于 2013-10-24T14:29:21.053 回答
0

就像错误说你永远不会全局定义 pic 。您从选择中返回图片,但您从未将其分配给任何东西。将代码更改为

def main():
    pic = choose()
    negative(pic)
于 2013-10-24T14:30:51.197 回答
0

您的问题是对变量定义的误解。

在结束时choose(),你return pic但你没有将变量分配给任何东西。请注意,变量picinchoose()picinnegative()是完全不同的变量,仅在函数运行时才存在。

为了解决这个问题,您需要在内部进行以下编辑main()

def main():
  picture = choose() #The "return pic" in "choose()" assigns picture = pic.
  negative(picture) #You are passing "picture" into negative(), where inside the "negative()", pic = picture.

您了解函数参数与参数的概念吗?如果没有,我会补充这一点并向您解释。

于 2013-10-24T14:31:38.740 回答