GPT答: |
7i24.cn
|
我可以帮你写一个dejister(解析器),它可以解析一些简单的数学表达式。以下是一个示例的dejister代码:
```python
class Dejister:
def __init__(self):
self.operators = {
'+': lambda x, y: x + y,
'-': lambda x, y: x - y,
'*': lambda x, y: x * y,
'/': lambda x, y: x / y
}
def evaluate(self, expression):
tokens = expression.split()
stack = []
for token in tokens:
if token.isdigit():
stack.append(float(token))
elif token in self.operators:
if len(stack) < 2:
raise ValueError("Invalid expression")
operand2 = stack.pop()
operand1 = stack.pop()
result = self.operators[token](operand1, operand2)
stack.append(result)
if len(stack) != 1:
raise ValueError("Invalid expression")
return stack[0]
```
使用示例:
```python
dejister = Dejister()
expression1 = "5 + 3 * 4"
result1 = dejister.evaluate(expression1)
print(result1) # 输出:17
expression2= "10 / (5 - 3)"
result2= dejister.evaluate(expression2)
print(result2) # 输出:5
expression3= "8 +"
result3= dejister.evaluate(expression3) # 抛出异常:Invalid expression
```
这个简单的dejister只能处理四则运算,不支持括号、负数等复杂情况。如果需要更复杂的功能,可以根据需求进行扩展。
|