用Python为Astar程序编写代码,以找到城市之间的最短路径。得到上面的错误,我完全不知所措。在几个.py文件之间进行转换,下面是相关部分:
从asdriver.py-添加了完整的asdriver
import adata # Map data
import astar # A* class
import sys
# Default start, goal cities
defaultcities = ('Yakima, WA', 'Tampa, FL')
def printnode(n):
print n.toString()
adata.input()
startcity = raw_input("Start city [{0}]: ".format(defaultcities[0])).strip()
if startcity == '': startcity = defaultcities[0]
if startcity not in adata.cities:
print "City not recognized"
sys.exit(0)
goalcity = raw_input("Goal city [{0}]: ".format(defaultcities[1])).strip()
if goalcity == '': goalcity = defaultcities[1]
if goalcity not in adata.cities:
print "City not recognized"
sys.exit(0)
dbg = raw_input("Debug Options: [none]").strip()
findpath = astar.AS(startcity, goalcity, printnode)
ans = findpath.astar_run(printnode, dbg)
if not ans:
print "No answer"
else:
print "Final Path:"
print ans.toString()
从astar.py公司在
^{pr2}$'
完全初学者,所以任何帮助将不胜感激。在
提前谢谢!!!在
您的
def astar_run()
方法返回self
(参见方法的最后一行),或者它通过切片path[::-1]
返回一个列表,也没有toString()
方法,所以您得到了这个异常。如果您想打印类的表示,那么声明这个方法__repr__()
是正常的,然后您就可以print ans
。如果您希望能够转换为字符串,那么该方法通常称为__str__()
。您希望从
astar_run()
返回什么?从同一个函数返回两个不同的类型通常是不好的做法。在相关问题 更多 >
编程相关推荐