5

あらゆる種類の同様の質問を調べましたが、自分の状況に合ったものを見つけることができませんでした (または、あるかもしれませんが、プログラミングは初めてです)。

私が使用している Python のバージョンは 2.7.4 で、プログラムの 11 行目に次のエラーが表示されます。NameError: global name 'opp' is not defined

床の寸法を計算する電卓を作りたかったのです。これが私のコードです:

def oppervlakte():
    global lengte
    global br
    global opp

    lengte = raw_input("Voer de lengte in: ") # Put in the length
    br = raw_input("Voer de breedte in: ") # Put in the width
    opp = lengte * br # Calculates the dimension of the floor
    return int(lengte), int(br) # Makes the variables lengte & br an integer

print opp

回答が得られたので、共有したいと思います。

def oppervlakte():
    lengte = raw_input("Voer de lengte in: ") # Asks for the length
    br = raw_input("Voer de breedte in: ") # Asks for the width

    lengte = int(lengte) # String lengte --> int lengte 
    br = int(br) # String br --> int br

    opp = lengte * br # Calculates the dimensions of the floor

    return opp, lengte, br

opp, lengte, br = oppervlakte()
print "De oppervlakte is", opp # Prints the dimension
4

1 に答える 1

9

関数を呼び出す必要があります。そうしないoppと、定義されません。

oppervlakte()
print opp

しかし、より良い方法は、関数から戻りopp、グローバル名前空間の変数に代入することです。

def oppervlakte():
    lengte = int(raw_input("Voer de lengte in: ")) #call int() here
    br = int(raw_input("Voer de breedte in: ")) # call int() here
    opp = lengte * br # Calculates the dimension of the floor
    return opp, lengte, br 

opp, lengte, br = oppervlakte()

また、文字列を呼び出すだけint()では整数にはなりません。返された値を変数に割り当てる必要があります。

>>> x = '123'
>>> int(x)       #returns a new value, doesn't affects `x`
123
>>> x            #x is still unchanged
'123'
>>> x = int(x)   #re-assign the returned value from int() to `x`
>>> x
123
于 2013-11-10T12:06:30.787 に答える