为类似digicode的系统实现队列

时间:2016-07-08 12:02:13

标签: python python-2.7 queue pyside

我有一个QPushButtons的系统就像一个数字门。每个按钮都有一个ID(整数)。当您按下的最后一个按钮对应于给定的密码时,会发生一些事情(就像门被打开一样)。

我正在考虑使用队列来实现这一点,并指向最后添加的值。但是如何测试密码是否正确?

以下是我的代码:

class MyQueue():
    def __init__(self, size, defaultValue=None):
        self.size = size
        self.content = [defaultValue]*size
        self.end = self.size-1
    def addItem(self, value):
        self.end = (self.end+1)%self.size
        self.content[self.end] = value
    def checkCorrect(self, password):
        pass #???

我可以填充队列,size是保存的项目数。但我不知道如何检查密码是否正确。

1 个答案:

答案 0 :(得分:2)

关键是从最后添加的值开始向后读取密码。如果密码正确,请检查密码中的每个字符/数字。如果你可以在最后看到密码,那你就是好的。以下是我的观点:

    def checkCorrect(self, password):
        pw = list(reversed(password))
        i = 0
        j = self.end
        if len(pw) > self.size:
            return False
        while True:
            if pw[i] <> self.content[j]:
                return False
            else:
                i += 1
                j = (j-1)%self.size
                if i == len(pw):
                    return True