2016-10-13 26 views
-1

文字列の中に浮かぶするintergersを変換し、このような何か:Pythonの - 私は、文字列の形式で式を持って

(20 + 3)/4 

は、私は簡単にeval()を使用することで、この方程式を解くことができますが、それは私に与えます答えは5であり、正解は5.75ではありません。 203、および4は整数なので、これがわかります。だから私は疑問に思っていた、彼らの最後に.0を付ける方法はありますか?または、私が使用するべき他のトリックがありますかeval()彼らは浮きだと思いますか?
注:数値は常に整数ではありませんので、解決策が整数であるかどうかを検出してそれに応じて処理することができればいいと思います。

ノート#2:私が使用しているのpython 2.7

ノート#3:は私が既にあることを知っている "のPython 2はレガシーでは、Pythonの3が、将来のです。"

ありがとうございます!

+0

'私はこの方程式をeval()を使って簡単に解くことができますが、実際はできません。 – Falmarri

+0

私は何を使うべきですか? –

+0

それは確かに文脈に依存するでしょう。なぜあなたはここで 'eval'に頼る必要がありますか? – roganjosh

答えて

4

あなたはそれを簡素化/ sympy_parser.parse_exprを使用して文字列を解析して、解決するためにsympyを使用することができます。

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

これは、他の有効な数学的表現のために働くだろう。

関連する問題