python计算字符串数字的加减法不适用eval函数
时间: 2023-08-01 18:11:29 浏览: 112
是的,eval()函数可以计算字符串形式的表达式,包括字符串数字的加减法,但在实际应用中,使用eval()函数存在一定的安全隐患。因为eval()函数会将字符串中的代码进行执行,如果字符串中包含恶意代码,可能会导致程序受到攻击。
以下是使用Python编写的计算字符串数字的加减法的示例代码:
```
def calculate(s: str) -> int:
res = 0
num = 0
sign = 1
stack = []
for c in s:
if c.isdigit():
num = num * 10 + int(c)
elif c == '+':
res += sign * num
num = 0
sign = 1
elif c == '-':
res += sign * num
num = 0
sign = -1
elif c == '(':
stack.append(res)
stack.append(sign)
sign = 1
res = 0
elif c == ')':
res += sign * num
num = 0
res *= stack.pop()
res += stack.pop()
return res + sign * num
```
这个函数使用栈来实现表达式的计算,可以处理包括括号在内的加减法运算。可以通过调用该函数来计算一个字符串形式的表达式,例如:
```
s = '1+2-(3+4)'
result = calculate(s)
print(result) # 输出 -4
```
阅读全文