关于conda:在python上赋值之前引用的局部变量’nheigth’

local variable 'nheigth' referenced before assignment on python

我正在运行以下python函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def imageprepare(argv):

    im = Image.open(argv).convert('L')
    width = float(im.size[0])
    height = float(im.size[1])
    newImage = Image.new('L', (28, 28), (255))

    if width > height:
        nheight = int(round((20.0/width*height),0))
        if (nheigth == 0):
            nheigth = 1  
        img = im.resize((20,nheight), Image.ANTIALIAS).filter(ImageFilter.SHARPEN)
        wtop = int(round(((28 - nheight)/2),0))
        newImage.paste(img, (4, wtop))
    else:
        nwidth = int(round((20.0/height*width),0)) #
        if (nwidth == 0):
            nwidth = 1
        img = im.resize((nwidth,20), Image.ANTIALIAS).filter(ImageFilter.SHARPEN)
        wleft = int(round(((28 - nwidth)/2),0))
        newImage.paste(img, (wleft, 4))

    tv = list(newImage.getdata())

    tva = [ (255-x)*1.0/255.0 for x in tv]
    return tva

它给出了错误:

UnboundLocalError: local variable 'nheigth' referenced before assignment.

我在Conda环境中运行它并使用python 3.6。

请帮我一下。我是Python的新手。


正如@falko已经发现的那样,您在声明为nheight的变量中有一个拼写错误,然后将其用作nheigth

Python是一种没有强制变量声明的动态语言,如果没有适当的工具,这种错误在运行时之前是不容易发现的。

我建议您使用适当的python ide,如pycharm,它将在您键入时发现这些错误。


有一个错误:nheigthnheight