web-dev-qa-db-ja.com

グローバル名「X」が定義されていません

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

私が使用している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
5
Noah Laster

関数を呼び出す必要があります。そうしないと、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
_
9