python (передача параметров в функции) - PullRequest
0 голосов
/ 16 февраля 2019

Я не новичок в python, но я столкнулся с этой проблемой, которая только что озадачила меня.

Итак, я решал проблему с бегуном по лабиринту, используя A *, а затем находил самый сложный лабиринт дляданное измерение.Для этой цели я создал функцию generateHardMaze (), которая вызывается из основной функции и принимает атрибут newMaze.

Теперь вот где все становится странным, когда я изменяю значение newMaze в условии if внутри цикла while, значение hardMaze изменяется без ввода кода во второе условие if. I 'Я не совсем уверен, почему это произошло, надеясь, что кто-то может мне помочь.

Я использую pycharm в качестве своей IDE и python3.6. * если это что-то меняет.

Я уверенэто не то, как работает упс, но я думаю, что это вещь Python.Кто-нибудь когда-нибудь сталкивался с чем-то подобным?Если да, пожалуйста, посочувствуйте.

Заранее спасибо.

def solveMazeAManH(newMaze,rows,cols):
    startTime = time.time()

    backTrackPriority = []

    setup_cells(rows, cols)

    # start and end points of the maze
    start = (0, 0)
    end = (rows - 1, cols - 1)

    current = start

    print("The path to be take is: ")

    print(current)

    frinLength = 0

    # traversing the neighbours
    while current != end:

        unvisited.remove(current)

        neighboursDFSandA(newMaze, current, rows, cols)

        heuristic = calManhattanDis(current, end)  # finding the heuristic for every traversal

        try:
            if not currentNeighbours:

                if not backTrackPriority:
                    print("No path available!")
                    return 0
                else:
                    while not currentNeighbours:
                        current = nextPopMan(backTrackPriority, end)
                        backTrackPriority.remove(current)
                        neighboursDFSandA(newMaze, current, rows, cols)

            neighbor = leastPathChildMan(heuristic, current, end)
            backTrackPriority.append(current)
            current = neighbor
            print(current)
            frinLength += 1

        except:
            print("No path Found!")
            return 0

    return frinLength

    endTime = time.time()

    print("The time taken to solve the maze using A* with manhattan distance: ")
    print(startTime - endTime)


def generateHardMaze(newMazes):

    rows = len(newMazes)
    cols = len(newMazes[0])

    hardMaze = newMaze

    print("Solving the original maze!")
    fringLength = solveMazeAManH(newMazes, rows, cols)
    print("Creating new harder Maze:")

    pFlag = True
    pCout = 0

    while pFlag:

        count = 0
        flag = True

        while flag:

            point = choice(setup_cells(rows, cols))

            if (newMazes[point[0]][point[1]] == 1):
                newMazes[point[0]][point[1]] = 0
            else:
                newMazes[point[0]][point[1]] = 1

            if (fringLength < solveMazeAManH(newMazes, rows, cols)):
                print("Harder Maze--------------------")
                hardMaze = newMaze
                fringLength = solveMazeAManH(newMazes, rows, cols)
                count = 0

            else:
                count += 1
                if count >= 10:
                    flag = False

        print("one")
        newMazes = creatMaze(rows)
        pCout += 1
        if pCout >= 100:
            pFlag = False
    print(hardMaze)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...