2017-03-29 3 views
-1

Also, im einem Tic Tac Toe-AI zu schreiben und haben ein Problem mit einer Funktion i definieren will, kann es zu somthing wird vereinfachter wiePython 3 lokale Variable verwendete nicht

z = True 
X = 1 
y = 2 

def place(X,y): 
    if z = True: 
     if X == 1: 
      x = y 

(bitte beachten Sie, ich gemacht einige meiner x'es Kapital nur zu machen, wenn einfacher, sie für diesen Beitrag zu unterscheiden) das Problem hier ist, dass ich den Wert von y zu X zuweisen muss, aber in der "x = y" Aussage, die einen Fehler gegeben wird x ist eine lokale Variable, die nicht verwendet wird, wie wenn das x in der if-Anweisung nur lokal für diese if-Anweisung ist und nicht verbunden ist. Ein Test mit ihm zeigte, dass nach dem Ausführen der Funktion das X unverändert war und der alte Wert ausgedruckt wurde. In der vorherigen Funktion ist kein Fehler angegeben, nur der mit x markierte Wert ist lokal. Was kann ich tun, um dies zu beheben, so dass X und X tatsächlich Wert teilen? Ich habe versucht, durch andere Variablen zu gehen, aber diese dident Arbeit .. Ich habe versucht, die globale Funktion auf einen Wert zu leed es durch, aber diese dident arbeiten entweder.

Dank für Antworten

+0

sein Wenn Sie meinen, „Wie weise ich auf eine globale Variable innerhalb einer Funktion?“, Dann ist die Antwort ist eine 'globale' Anweisung zu verwenden. Siehe http://stackoverflow.com/questions/4693120/use-of-global-keyword-in-python – khelwood

+0

Auch 'if z = True:' ist ungültige Syntax. – khelwood

Antwort

0

Ihre ‚x‘ ist lokal, da sie zunächst lokal definiert ist. Definieren Sie es global und markieren Sie es global. Das heißt,

z = True 
X = 1 
x = None 
y = 2 

def place(X,y): 
    global x 
    if z = True: 
     if X == 1: 
      x = y 
0

Wenn Sie von den globalen Variablen zugreifen möchten innerhalb einer Funktion das Schlüsselwort verwenden sollte global so die Funktion weiß, wo diese Variablen zu finden.

z = True 
X = 1 
y = 2 

def place(X,y): 
    global z, X, y 
    if z = True: 
     if X == 1: 
      x = y 
0

Sie haben einen Tippfehler hier:

if z = True: 

Es sollte

if z == True: 
+0

Das ist eine gute Beobachtung, aber es beantwortet nicht wirklich die Frage, die das OP stellt. – khelwood

Verwandte Themen