Skip to main content
 首页 » 编程设计

python比较用户输入的括号并确保它们有一对

2025年05月04日23xiaohuochai

我正在编写一个程序来获取用户输入的括号,即 {} [] () 并检查它们是否有一对(左括号和右括号)。我在运行我的代码时遇到错误,我总是返回 false。我尝试了不同的方法来检查预先设定的“列表”,但它似乎不起作用。我也必须使用上面的类(class)。任何帮助表示赞赏。

一些示例输入是:

    >>>parenthesesMatch('{[]}') 
    True 
    >>>parenthesesMatch('({})') 
    True 
    >>>parenthesesMatch('{[)]}') 
    False 

我的代码:

    #George flamburis 
 
 
class Stack(): 
def __init__(self,que=[]): 
    self.lst = que 
def __repr__(self): 
    return "Stack({})".format(self.lst) 
def push(self, add): 
    self.lst.append(add) 
def pop(self): 
    return self.lst.pop() 
def isEmpty(self): 
    return self.lst==[] 
def first(self, loc=0):            #naming of this method can't be [] 
    return self.lst[loc] 
def len(self): 
    return len(self.lst) 
 
def parenthesesMatch(match): 
     s = Stack() 
     end = [] 
     for char in match: 
         if char in "[ { (": 
             s.push(char) 
         else: 
             end.append(char) 
 
     if s.len()==len(end): 
             for num in range(len(end)): 
                     if s.first(num) and end[num] not in '[]' or '{}' or'()': 
                             return False 
             return True 
     elif s.len()!=len(end): 
             return False 

请您参考如下方法:

当你看到一个结束字符时,简单地尝试从堆栈中弹出一个结束字符要容易得多,如果不可能则失败。

pairs = dict(tuple(pair) for pair in ["()", "[]", "{}"]) 
# pairs["("] == ")" 
# pairs["["] == "]" 
# etc 
def parenthesesMatch(match): 
    s = Stack() 
    for char in match: 
        # Not "] } )" 
        if char in pairs.values() and pairs[s.pop()] != char: 
            return False 
        elif char in pairs: 
            s.push(char) 
    return s.isEmpty()