编写python程序,判断一个只带小括号的表达式中中括号是否匹配(若不匹配判断哪边的括号少了)
时间: 2024-10-21 08:01:24 浏览: 25
在Python中,你可以使用栈数据结构来解决这个问题。当遇到左大括号'['或'('时,将它压入栈;当遇到右大括号']'或')'时,检查栈顶元素是否与其配对。如果配对,弹出栈顶元素;如果不配对,则说明有括号不匹配,并报告缺少的括号类型。
下面是一个简单的函数实现:
```python
def check_brackets(expr):
stack = []
opening_brackets = {')': '(', ']': '['}
for char in expr:
if char in opening_brackets.values():
stack.append(char)
elif char in opening_brackets.keys():
if not stack or stack.pop() != opening_brackets[char]:
return f"缺少{opening_brackets[char]}"
# 如果还有剩余的左括号未关闭,意味着右括号少于左括号
if stack:
return "缺少" + stack[-1]
else:
return "括号匹配"
# 测试函数
expr1 = "[[()]"
expr2 = "[[)]"
print(check_brackets(expr1)) # 输出:"括号匹配"
print(check_brackets(expr2))
阅读全文