5 Stimmen

Globaler Name 'X' nicht definiert

Ich habe in allen Arten von ähnlichen Fragen gesucht, aber konnte einfach keine finden, die zu meiner Situation passte (oder vielleicht gibt es eine, aber ich bin neu im Programmieren).

Die Version von Python, die ich verwende, ist 2.7.4, und in meinem Programm erhalte ich den Fehler in Zeile 11: NameError: global name 'opp' is not defined

Ich wollte einen Rechner für die Abmessungen von Böden machen. Hier ist mein Code:

def oppervlakte():
    global lengte
    global br
    global opp

    lengte = raw_input("Geben Sie die Länge ein: ") # Länge eingeben
    br = raw_input("Geben Sie die Breite ein: ") # Breite eingeben
    opp = lengte * br # Berechnet die Größe des Bodens
    return int(lengte), int(br) # Macht die Variablen lengte & br zu Ganzzahlen

print opp

Da ich jetzt die Antwort habe, möchte ich sie mit Ihnen teilen, also hier ist sie:

def oppervlakte():
    lengte = raw_input("Geben Sie die Länge ein: ") # Fragt nach der Länge
    br = raw_input("Geben Sie die Breite ein: ") # Fragt nach der Breite

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

    opp = lengte * br # Berechnet die Abmessungen des Bodens

    return opp, lengte, br

opp, lengte, br = oppervlakte()
print "Die Abmessung beträgt", opp # Gibt die Abmessung aus

9voto

Ashwini Chaudhary Punkte 231447

Sie sollten Ihre Funktion aufrufen, ansonsten wird opp nicht definiert.

oppervlakte()
print opp

Aber eine bessere Möglichkeit wäre es, opp aus der Funktion zurückzugeben und einer Variablen im globalen Namespace zuzuweisen.

def oppervlakte():
    lengte = int(raw_input("Geben Sie die Länge ein: ")) #hier int() aufrufen
    br = int(raw_input("Geben Sie die Breite ein: ")) # hier int() aufrufen
    opp = lengte * br # Berechnet die Dimension des Bodens
    return opp, lengte, br 

opp, lengte, br = oppervlakte()

Und wenn Sie int() einfach auf einen String aufrufen, wird er nicht zu einem Integer, Sie sollten den zurückgegebenen Wert einer Variablen zuweisen.

>>> x = '123'
>>> int(x)       # gibt einen neuen Wert zurück, beeinflusst `x` nicht
123
>>> x            # x ist immer noch unverändert
'123'
>>> x = int(x)   #weisen Sie den von int() zurückgegebenen Wert erneut `x` zu
>>> x
123

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X