“TypeError: can only concatenate tuple (not “float”) to tuple” 出现

如何解决“TypeError: can only concatenate tuple (not “float”) to tuple” 出现

所以我正在研究我们的实验室工作,我们必须为吃豆人实现深度优先搜索算法。我一直有这个错误,但我无法调试它,因为我只能在命令提示符下运行该文件,而且因为它是一个基于多个文件的程序,我对这些知之甚少。任何人都可以帮助我了解我在这里做错了什么吗?

我实现的算法是这样的:

def DFS(succ,stack,problem):
global flag
successors = []
if problem.isGoalState(succ):
    flag = True
    return
else:
    if flag:
        stack.push(succ)
        return
    else:
        successors.append((problem.getSuccessors(succ)))
        if not successors:
            return
        else:
            i = 0
            while i < len(successors):
                if flag:
                    return stack
                else:
                    stack.push(successors[i])
                    DFS(successors[i],problem)
return

主要调用函数是:

def depthFirstSearch(problem):
"""
Search the deepest nodes in the search tree first.

Your search algorithm needs to return a list of actions that reaches the
goal. Make sure to implement a graph search algorithm.

To get started,you might want to try some of these simple commands to
understand the search problem that is being passed in:
"""
print "Start:",problem.getStartState()
print "Is the start a goal?",problem.isGoalState(problem.getStartState())
print "Start's successors:",problem.getSuccessors(problem.getStartState())
stack = util.Stack()
startState = problem.getStartState()
startNode = (startState,[])
DFS(startNode,problem)
while not stack.IsEmpty:
    val = stack.pop()
    print val
"*** YOUR CODE HERE ***"

出现的错误是:

> File "C:\Users\Abdullah Khurram\Desktop\AI Lab\search\game.py",line
> 607,in run
>     agent.registerInitialState(self.state.deepcopy())   File "C:\Users\Abdullah Khurram\Desktop\AI Lab\search\searchAgents.py",> line 115,in registerInitialState
>     self.actions  = self.searchFunction(problem) # Find a path   File "C:\Users\Abdullah Khurram\Desktop\AI Lab\search\search.py",line 93,> in depthFirstSearch
>     DFS(startNode,problem)   File "C:\Users\Abdullah Khurram\Desktop\AI Lab\search\search.py",line 141,in DFS
>     successors.append((problem.getSuccessors(succ)))   File "C:\Users\Abdullah Khurram\Desktop\AI Lab\search\searchAgents.py",> line 199,in getSuccessors
>     nextx,nexty = int(x + dx),int(y + dy) TypeError: can only concatenate tuple (not "float") to tuple

它所指的搜索代理函数如下:

def getSuccessors(self,state):
    """
    Returns successor states,the actions they require,and a cost of 1.

     As noted in search.py:
         For a given state,this should return a list of triples,(successor,action,stepCost),where 'successor' is a
     successor to the current state,'action' is the action
     required to get there,and 'stepCost' is the incremental
     cost of expanding to that successor
    """

    successors = []
    for action in [Directions.norTH,Directions.soUTH,Directions.EAST,Directions.WEST]:
        x,y = state
        dx,dy = Actions.directionToVector(action)
        nextx,int(y + dy)
        if not self.walls[nextx][nexty]:
            nextState = (nextx,nexty)
            cost = self.costFn(nextState)
            successors.append( ( nextState,cost) )

    # Bookkeeping for display purposes
    self._expanded += 1 # DO NOT CHANGE
    if state not in self._visited:
        self._visited[state] = True
        self._visitedlist.append(state)

    return successors

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?