我正在尝试编写代码来解决基本迷宫,该迷宫由带有“#”表示墙壁“。”的列表组成。是自由空间,S是开始,E是结束。我的算法包括首先检查右边的空间是否空闲,如果不是,则检查该空间,然后向下,最后检查左边。我也意识到,如果出现死胡同,这会带来问题,但我稍后会担心。到目前为止,我有代码可以打印列表并找到起点的索引值为(2,0)。基本上,我想做的就是以该起始值作为defsolve函数的参数,然后遍历我的算法,同时将访问的位置标记为“ x” ...如果有意义的话。当我运行代码时,我不断得到
if maze[r+1][c] == '.':
NameError: name 'r' is not defined
我似乎也无法在此网站上正确打印迷宫,因此 here is my maze。
def main():
print_maze()
start()
solve(start())
print_maze()
def print_maze():
for r in range(0,len(maze)):
for c in range(0,len(maze)):
print(maze[r][c], end='')
print('')
def start():
find_value = 'S'
for r in range(0,len(maze)):
for c in range (0,len(maze)):
if find_value in maze[r][c]:
return(r,c)
break
def solve(position):
if maze[r+1][c] == '.':
maze[r][c] = 'x'
return (r,c)
elif maze[r][c+1] == '.':
maze[r][c] = 'x'
return (r,c)
elif maze[r][c-1] == '.':
maze[r][c] = 'x'
return (r,c)
elif maze[r-1][c] == '.':
maze[r][c] = 'x'
return (r,c)
else:
print('Route Error')
main()
答案 0 :(得分:0)
您遇到的错误是由于main
调用solve
而没有必需的参数。
def main():
print_maze()
start()
solve() # Error! Missing required arg
print_maze()
由于solve
立即重新定义了start_point
,因此您只需删除所需的参数即可:
def solve():
start_point = start()
最后,您没有提供maze
,因此任何试图帮助您解决此问题的人将无法
答案 1 :(得分:0)
您需要将for
返回的值传递到start()
函数中,因为您将其列为参数。然后,您可以从solve()
函数中删除start_point=
部分。
solve()
答案 2 :(得分:0)
尝试更改def slove格式,例如; ==“ X” =“x²”