Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在另一个类中调用一个类';while loop是什么?_Python - Fatal编程技术网

Python 在另一个类中调用一个类';while loop是什么?

Python 在另一个类中调用一个类';while loop是什么?,python,Python,我正试图找出如何让solve(一种冒泡排序算法变体)正常工作。它应该以MarblesBoard类为例,然后切换前两项(如果两者都不为0)或旋转它们,打印电路板并重复,直到解决为止(大理石按升序排序) 以下是大理石板课程: class MarblesBoard: def __init__(self, marbles): self.input = list(marbles) print(marbles) def switch(self):

我正试图找出如何让solve(一种冒泡排序算法变体)正常工作。它应该以MarblesBoard类为例,然后切换前两项(如果两者都不为0)或旋转它们,打印电路板并重复,直到解决为止(大理石按升序排序)

以下是大理石板课程:

class MarblesBoard:
    def __init__(self, marbles):
        self.input = list(marbles) 
        print(marbles)
    def switch(self):
        self.input[1], self.input[0] = self.input[0], self.input[1]
        print self.input     
    def rotate(self):
        return self.input[1:] + self.input[:1]
        print self.input
    def is_solved(self):
        if all(self.input[i] <= self.input[i+1] for i in range(len(self.input)-1)):
            return True
            print "True"
        else:
            print "Not solved!"

board = MarblesBoard((3,6,7,4,1,0,8,2,5))
board.switch()
board.rotate()
board.is_solved()
以下是解算器类:

class Solver:
    def __init__(self, MarblesBoard):
        #print self
        self.board = MarblesBoard
    def solve(self):
        if all(self.board.input[i] <= self.board.input[i+1] for i in range(len(self.board.input)-1)):
            return True
            #break
        else:
            if self.board.input[0] & self.board.input[1] != 0:
                if self.board.input[1] < self.board.input[0]:
                    self.board = self.board.switch()
                    print self.board
                else:
                    self.board = self.board.rotate()
                    print self.board
            else:
                self.board = self.board.rotate()
                print self.board
        return


player = Solver(board)
player.solve()

我不认为return在我的Sorter类中可以像我希望的那样工作,我已经尝试用while循环替换初始if-else,在条件为false时将所有内部if-else循环放在其中。这导致了一个无限循环。请告知。

您的错误描述太模糊了,至少对我来说是这样。对我来说也太模糊了。顺便说一句,您不应该将变量命名为与类名称相同的名称,这很危险。我希望第一个内部if循环继续工作,直到主外部if循环返回true。您的rotate方法不适合您的使用。您只是返回值,而不存储它们。你说的是循环,没有循环。你只有if条件。我编辑了我的代码(见原始帖子),在solve方法中的每个操作之后更改了板。我还删除了除一条return语句之外的所有语句,我希望它能够循环主if-else语句。事实似乎并非如此。我想避免无限循环。建议?
class Solver:
    def __init__(self, MarblesBoard):
        #print self
        self.board = MarblesBoard
    def solve(self):
        if all(self.board.input[i] <= self.board.input[i+1] for i in range(len(self.board.input)-1)):
            return True
            #break
        else:
            if self.board.input[0] & self.board.input[1] != 0:
                if self.board.input[1] < self.board.input[0]:
                    self.board = self.board.switch()
                    print self.board
                else:
                    self.board = self.board.rotate()
                    print self.board
            else:
                self.board = self.board.rotate()
                print self.board
        return


player = Solver(board)
player.solve()
[6, 7, 4, 1, 0, 8, 2, 5, 3]