File "D:\23101\比赛\光电赛\maze_car\测试\1.py", line 34, in find_shortest_path path += sub_path[1:] TypeError: 'int' object is not subscriptable
时间: 2023-07-21 15:43:58 浏览: 126
这个错误说明 `sub_path` 是一个整数而不是一个列表,因此无法执行 `sub_path[1:]` 操作。
这可能是因为在 `Astar.find_path` 函数中没有找到路径,导致返回了一个整数。你可以在 `find_shortest_path` 函数中添加一些错误检查,确保 `sub_path` 是一个列表。以下是修改后的代码:
```python
# 定义寻找最短路径的函数
def find_shortest_path(start, end, waypoints):
# 初始化路径
path = [start]
# 依次加入路标点
for waypoint in waypoints:
# 寻找当前位置到下一个路标点之间的最短路径
sub_path = Astar.find_path(path[-1][0], path[-1][1], waypoint[0], waypoint[1])
# 如果找不到路径,返回空路径和无穷大距离
if sub_path == -1:
return [], float('inf')
# 将最短路径上的所有点加入路径中
path += sub_path[1:]
# 寻找最后一个路标点到终点之间的最短路径
sub_path = Astar.find_path(path[-1][0], path[-1][1], end[0], end[1])
# 如果找不到路径,返回空路径和无穷大距离
if sub_path == -1:
return [], float('inf')
# 将最短路径上的所有点加入路径中
path += sub_path[1:]
# 计算路径长度
dist = get_path_distance(path)
return path, dist
```
这里我们添加了一些错误检查,如果 `sub_path` 是整数 `-1`,就返回空路径和无穷大的距离。这可以避免在后面的计算中出现错误。希望这可以帮助你解决问题!
阅读全文