string = input()
string = (''.join([str(eval(s)) if ('(' in s and ')' in s) else s for s in string.split(' ')]))
print(string)
对于这段代码,有一些问题:
发布于 2020-07-14 11:21:43
发行- 1
,它会给我一个EOF错误,因为它会以sp.sqrt(4)将是sp.sqrt(4)的方式分割单词)
不,它不会那样拆分字符串,因为您正在使用‘’拆分字符串,所以拆分函数的输出将是['5-(2-sp.sqrt(4))']
sp
)有关)。问题- 2
,如果我写'2-10‘,它不会计算它,只会返回'2-10’,但是当我写'2-10*(2-5)‘时,它会返回写的答案。
这是因为只有在同时存在'(‘和’')‘的情况下,才调用eval()函数。
问题- 3
这是因为eval()只接受有效的python表达式(不能将未声明的变量直接放在参数中)。在您的案例中,x以前没有声明过。
解决方案:
这里有一个交感函数parse_expr
,它可能做您想做的事情:
In [20]: from sympy import parse_expr
In [21]: parse_expr('5-(2-sqrt(4))')
Out[21]: 5
In [22]: parse_expr('2-10')
Out[22]: -8
In [23]: parse_expr('2+x-10-(5*10)')
Out[23]: x - 58
https://stackoverflow.com/questions/62893427
复制相似问题