gpt4 book ai didi

python - “元组”不可调用错误

转载 作者:行者123 更新时间:2023-11-28 20:22:24 24 4
gpt4 key购买 nike

我现在这个问题已经被问过好几次了。但是,答案似乎并没有解决我的问题。我收到类型错误,“元组”对象不可调用。即使列表中的元组以正确的方式用逗号分隔,我也得到了这个:

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 是 (3, 2, [(0 , 1)]) 例如。 moves() 函数返回一个移动列表,就像 selectedMove 的最终值一样。它是游戏树搜索的 alpha beta 修剪实现。 move() 函数实际上将棋子移动到该位置并更新棋盘以完成计算机的回合。变量 b 表示当前游戏板上的值我尝试的每一次转换(即强制 selectedMove 本身就是一个列表,等等)都会在“移动(b,selectedMove,-1)”行中给出相同的错误

有人知道哪里出了问题吗?

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

最佳答案

在这一行中,您说您将使用名称 move 来引用 m[2] 的元素:

for move in m[2]:

但稍后,您尝试调用一个您称为 move函数:

move(b, selectedMove, -1)

一旦你看到了这个,错误消息就完全有意义了:

TypeError: 'tuple' object is not callable

因为名称 move 不再引用该函数,而是引用它在循环中绑定(bind)到的最后一个元组。

比修复此特定错误(如果您还想使用它来引用函数,请不要使用 move 作为变量名)更重要的是识别解释器如何告诉您确切的内容问题是。

它说一个元组是不可调用的;在它提示的代码行中,您正在调用 move;因此 move 是一个元组,您的下一步应该是添加 print(move) (或 print(type(move), repr(move)) 如果你想花哨的话)看看它实际上是什么元组。

关于python - “元组”不可调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23882477/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com