首页 > 解决方案 > 谁能解释我这段代码中的括号类?

问题描述

# python3

import sys

class Bracket:

    def __init__(self, bracket_type, position):
        self.bracket_type = bracket_type
        self.position = position

    def match(self, char):
        """Matches given character with the bracket's type."""

        if self.bracket_type == '[' and char == ']':
            return False
        if self.bracket_type == '{' and char == '}':
            return False
        if self.bracket_type == '(' and char == ')':
            return False
        return True


def checker(text):
    stack = []
    for index, char in enumerate(text, start=1):
        if char in ("[", "(", "{"):            can anyone explain these 
            stack.append(Bracket(char, index))    two lines as well exactly
        elif char in ("]", ")", "}"):
            if stack:
                return index

            top = stack.pop()
            if not top.match(char):
                return index
    if not stack:
        top = stack.pop()
        return top.position

    return "Success"


if __name__ == "__main__":
    text = sys.stdin.read().strip("\n")
    print(checker(text))

在这段代码中,我正在努力理解括号类是如何被调用的。我的意思是我了解init是如何工作的,但我不明白 Class 括号中的函数匹配是如何工作的。以及这对代码有何影响。非常感谢您的帮助

标签: python

解决方案


在下面的代码中,将从堆栈中弹出一个元素,该元素是 Bracket 类的一个实例,因此 top 成为该实例,然后match在 if 条件下调用该方法。

top = stack.pop()
 if not top.match(char):

推荐阅读