我有一个字符串形式的等式,如下所示:
(20 + 3) / 4
我可以使用eval()
轻松解决这个等式,但它会给我一个5
的答案,而不是5.75
的正确答案。我知道这是因为20
,3
和4
是整数。所以我想知道,有什么方法可以将.0
添加到它们的末尾吗?或者是否有其他一些技巧我应该让eval()
认为它们是花车?
注意:这些数字并不总是整数,所以如果解决方案可以检测它们是否为整数并且相应地对它们进行处理,那就太好了。
注意#2:我正在使用python 2.7
注意#3:我已经知道" Python 2是遗产,Python 3是未来。"
谢谢!
答案 0 :(得分:4)
您可以使用sympy
使用sympy_parser.parse_expr
解析字符串,然后解决/简化它:
>>> from sympy.parsing import sympy_parser
>>> exp = '(20 + 3) / 4'
>>> sympy_parser.parse_expr(exp).round(2)
5.75
这也适用于其他有效的数学表达式。