TypeError:“ float”对象不可下标python 3.7.0

时间:2019-09-26 09:59:19

标签: python

我一直在尝试为搜索算法创建一个Minmax代理,并且正在努力寻找为什么这会给我一个错误:

def getAction(self, gameState):
    def isTerminalState(gameState):
        if (gameState.isWin() or gameState.isLose() or self.depth == 0):
            return True;
        return False;

    def max_value(state, depth):
        if isTerminalState(state):
            return self.evaluationFunction(state)

        depth -= 1
        maximum_value = float("-inf")
        maximum_action = None
        for action in state.getLegalActions(0):
            next_state = state.generateSuccessor(0, action)
            num_ghosts = state.getNumAgents() - 1
            temp_value = min_value(next_state, depth, num_ghosts)
            if temp_value > maximum_value:
                maximum_value = temp_value
                maximum_action = action
        return (maximum_value, maximum_action)

    def min_value(state, depth, num_ghosts):
        if isTerminalState(state):
            return self.evaluationFunction(state)

        minimum_value = float("inf")
        if num_ghosts is 1:
            for action in state.getLegalActions(1):
                next_state = state.generateSuccessor(1, action)
                temp_value = max_value(next_state, depth)[0]
                if temp_value < minimum_value:
                    minimum_value = temp_value
                return minimum_value
        else:
            list = []
            if num_ghosts > 1:
                for action in state.getLegalActions(i):
                    next_state = state.generateSuccessor(i, action)
                    list.append(min_value(next_state, depth, num_ghosts - 1))
            return min(list)

    return max_value(gameState, self.depth)[1]

错误出现在min_value(状态,深度,num_ghosts)内部,即:

temp_value = max_value(next_state, depth)[0]

我正在尝试从max_value函数访问maxium_value,而我收到的错误是

TypeError: 'float' object is not subscriptable

请帮助:(

1 个答案:

答案 0 :(得分:0)

该错误告诉您问题所在。您从max_value返回浮点数而不是元组(或任何其他可下标数据类型)。

            return self.evaluationFunction(state)

这是您返回浮点数的行。如果您需要进一步的帮助,请将代码发布到此功能。