用python写个程序,本关任务:编写程序,判断一个带小括号的表达式中中括号是否匹配。测试输入:(5+3)*2+((6+7-9)/2)3+5 预期输出: 括号匹配 测试输入:(5+3)(2+5 预期输出: 左括号多于右括号,不匹配! 测试输入:(5+3)*2) 预期输出: 右括号多于左括号,不匹配!输出结果只能有一个!
时间: 2023-06-03 08:01:55 浏览: 333
好的,我明白了。对于你的第一个问题,我可以给出如下的Python程序来判断带小括号的表达式中中括号是否匹配:
```python
def check_parenthesis(expr):
stack = []
for char in expr:
if char == '(':
stack.append(char)
elif char == ')':
if not stack or stack.pop() != '(':
return "右括号多于左括号,不匹配!"
elif char == '[':
stack.append(char)
elif char == ']':
if not stack or stack.pop() != '[':
return "右中括号多于左中括号,不匹配!"
if stack:
return "左括号多于右括号,不匹配!"
return "括号匹配"
# 测试
print(check_parenthesis("(5 3)*2"))
print(check_parenthesis("((6 7-9)/2)3 5"))
print(check_parenthesis("(5 3)(2 5"))
print(check_parenthesis("(5 3)*2)"))
```
如果输入的表达式中左括号、右括号和中括号都匹配,则会输出"括号匹配";如果左括号多于右括号,则输出"左括号多于右括号,不匹配!";如果右括号多于左括号或右中括号多于左中括号,则输出"右括号多于左括号,不匹配!"。
注意,该程序只是一个简单的可行解,可能不适用于所有情况,需要根据实际需求进行调整。
阅读全文