如何使用python中的函数解决基本的迷宫?

时间:2019-05-06 16:37:24

标签: python function solver maze

我正在尝试编写代码来解决基本迷宫,该迷宫由带有“#”表示墙壁“。”的列表组成。是自由空间,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()

3 个答案:

答案 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²”