为类似数字代码的系统实现队列

Implementing a queue for a digicode-like system

我有一个带有 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是保存的项目数。但是不知道怎么查看密码是否正确

关键是从最后一个加值开始往后读密码。检查密码中的每个 character/number 是否正确。如果你能读到密码直到最后,那你就很好了。这是我要搭配的东西:

    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