Python-将整数转换为字符串中的浮点数

Python-将整数转换为字符串中的浮点数,python,string,python-2.7,Python,String,Python 2.7,我有一个字符串形式的方程,类似这样: (20 + 3) / 4 我可以用eval()轻松地解出这个方程,但它会给我一个5的答案,而不是5.75的正确答案。我知道这是因为20、3和4都是整数。所以我想知道,有没有办法在它们的末端钉上一个.0?或者我应该使用其他技巧来使eval()认为它们是浮动吗? 注意:数字并不总是整数,因此如果解决方案能够检测它们是否为整数并相应地处理它们,那就太好了 注意#2:我正在使用python 2.7 注意#3:我已经知道“Python 2是传统,Python 3是未

我有一个字符串形式的方程,类似这样:

(20 + 3) / 4
我可以用
eval()
轻松地解出这个方程,但它会给我一个
5
的答案,而不是
5.75
的正确答案。我知道这是因为
20
3
4
都是整数。所以我想知道,有没有办法在它们的末端钉上一个
.0
?或者我应该使用其他技巧来使
eval()
认为它们是浮动吗?
注意:数字并不总是整数,因此如果解决方案能够检测它们是否为整数并相应地处理它们,那就太好了

注意#2:我正在使用python 2.7

注意#3:我已经知道“Python 2是传统,Python 3是未来。”

谢谢

您可以使用解析字符串,然后对其进行求解/简化:

>>> from sympy.parsing import sympy_parser
>>> exp = '(20 + 3) / 4'
>>> sympy_parser.parse_expr(exp).round(2)
5.75

这也适用于其他有效的数学表达式。

我可以通过使用eval()轻松地解决这个方程。
也许你可以,但你真的不应该。那么,我应该使用什么呢?这肯定取决于上下文。为什么您需要依赖这里的
eval
?最好解析表达式并从表达式树计算答案。使用eval意味着字符串可以是任何字符串,甚至是“os.call(\“format c:\”)或类似的字符串。除非你知道字符串是如何生成的,或者你将字符串解析成一个表达式,否则我怀疑你能否“附加”到“a.0”。@roganjosh我正在编写一个非常基本的程序,在这个程序中,你输入一个等式,它返回值。在我看来,使用eval是最快捷、最干净的方法。