'Tupel' nicht aufrufbar-Fehler
Ich nun, diese Frage wurde schon mehrfach gefragt. Aber die Antworten scheinen nicht zu lösen mein problem.
Bekomme ich eine Art Fehlermeldung, 'Tupel' - Objekt ist nicht aufrufbar. Bekomme ich diese auch wenn das Tupel in der Liste ist durch Kommata getrennt in der richtigen Art und Weise:
def aiMove(b):
movesList = moves(b, -1)
heuristic = []
if movesList:
for m in movesList:
bt = copy.deepcopy(b)
print("bt: ", bt)
bt[m[0]][m[1]] = -1
h = heat[m[0]][m[1]]
for move in m[2]:
i=1;
try:
while (-1* bt[m[0] + i*move[0]][m[1] + i*move[1]] < 0):
bt[m[0] + i*move[0]][m[1] + i*move[1]] *= -1
bt[m[0] + i*move[0]][m[1] + i*move[1]] += -1
i += 1;
except IndexError:
continue
alpha = max(float('-inf'), alphabeta(bt, depth-1, h, float('-inf'), float('inf'), 1))
heuristic.append(alpha)
if (float('inf') <= alpha):
break
selectedMove = movesList[int(heuristic.index(max(heuristic)))]
move(b, selectedMove, -1)
else:
print ("The AI can't move!")
return []
selectedMove ist (3, 2, [(0 , 1)]) zum Beispiel. Die bewegt sich () - Funktion gibt eine Liste der bewegt sich wie der Letzte Wert für selectedMove. Es ist ein alpha-beta-pruning Umsetzung für game-tree search. Die move () - Funktion tatsächlich bewegt sich das Stück an, dass position und aktualisiert die platine fertig-Computer " drehen.
die variable b stellt die Werte auf den aktuellen Spielplan
Jede Umwandlung die ich versuchen (d.h. Kraft selectedMove eine Liste an sich, etc..) geben den gleichen Fehler in der Zeile "move(b, selectedMove, -1)"
Nicht jemand sehen, was falsch sein kann?
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python33\lib\tkinter\__init__.py", line 1489, in __call__
return self.func(*args)
File "C:\Users\Loek Janssen\Documents\GitHub\CITS1401-Project\DrawBoard.py", line 131, in eventfun
placePiece(x, y, b, n)
File "C:\Users\Loek Janssen\Documents\GitHub\CITS1401-Project\DrawBoard.py", line 119, in placePiece
project2.aiMove(b)
File "C:\Users\Loek Janssen\Documents\GitHub\CITS1401-Project\project2.py", line 225, in aiMove
move(b, selectedMove, -1)
TypeError: 'tuple' object is not callable
selectedMove
irgendwo in Ihrem move
Funktion wie selectedMove(args)
.Ohne zu sehen, Ihren vollständigen traceback wir Schießen in der Dunkelheit, aber eine sehr häufige Ursache für diese Art von Fehler ist die Neuzuweisung der name für eine der integrierten Funktionen wie
max
zu beziehen, etwas anderes als eine Funktion (in diesem Fall ein Tupel). Ich würde überprüfen Sie Ihren code, um sicherzustellen, dass Sie niemals so etwas wie max = (0, 1)
oder ähnliches.InformationsquelleAutor Loek Janssen | 2014-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
In dieser Linie, Sie sagen, dass Sie gehen, verwenden Sie den Namen
move
zu finden Elemente vonm[2]
:Dann aber später, Sie versuchen, rufen Sie ein Funktion, dass Sie angerufen haben
move
:Sobald Sie gesehen habe, die Fehlermeldung, die durchaus Sinn macht:
weil der name
move
bezieht sich nicht auf die Funktion, nicht mehr, aber der Letzte Tupel es gebunden war, um in der Schleife.Wichtiger als das beheben dieses Fehlers (nicht verwenden
move
für den Namen einer Variablen, wenn Sie wollen auch, es zu benutzen, beziehen sich auf eine Funktion) ist zu erkennen, wie der Dolmetscher erzählte Sie genau, was das problem war.Er sagte, dass ein Tupel nicht aufrufbar; in der Zeile des Codes klagte er über Sie riefen
move
; somove
war ein Tupel, und Ihr Nächster Schritt sollte haben gewesen das hinzufügenprint(move)
(oderprint(type(move), repr(move))
wenn Sie wollen, Lust), um zu sehen, welche Tupel es eigentlich war.InformationsquelleAutor DSM