# 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的工作原理,但是我不理解类括号中的函数匹配是如何工作的。这对代码有何影响。我非常感谢你的帮助
下面的for循环正在枚举传递给checker()函数的字符串
它返回一个索引和传递给checker()的字符串的每个字符。 start=1的原因是在传递给checker()的字符串周围不包含引号
下面的条件检查是否存在字符“[”、“(”、“{”)。 如果存在,则将它们作为参数传递给括号类。然后将从括号类返回的值附加到列表堆栈[]
尝试在for循环之后添加一个print语句,如下所示,并运行代码
我想这会帮助你理解它在做什么
在
Bracket Class
中,bracket_type
是char
,而position
是index
例如,当您定义函数时
您使用
同样,如果您定义了一个类,例如
创建类的对象
如果在init方法中传递任何参数。必须将其添加到对象类中。就是
*args表示它可以是任何参数。代码中的两个参数是括号类型和位置。必须将其参数传递给对象。 我希望这能回答你关于课堂的问题
在代码中,下一行将从堆栈中弹出一个元素,它是括号类的实例,因此top将成为该实例,然后在if条件中调用
match
方法相关问题 更多 >
编程相关推荐