のような文字列があり、答えを評価する(4*1+3)/2
ために使用したいと考えています。eval
中間ステップで残りが得られるかどうかはどうすればわかりますか? この場合、最後のステップで剰余を得て、7/2 を評価します。
すべての引数が整数であり、許可されるオペランドは +、-、*、/、(、) のみであると想定します。
のような文字列があり、答えを評価する(4*1+3)/2
ために使用したいと考えています。eval
中間ステップで残りが得られるかどうかはどうすればわかりますか? この場合、最後のステップで剰余を得て、7/2 を評価します。
すべての引数が整数であり、許可されるオペランドは +、-、*、/、(、) のみであると想定します。
もしあなたがそうするなら
from __future__ import division
新しい Python 3 スタイルの分割が得られます。
>>> eval("(4*1+3)/2")
3.5
出力のタイプが であるため、どこかに剰余があることがわかりますfloat
。
関数を使用してみてくださいast.parse
:
>>> import ast
>>> x = ast.parse('(4*1+3)/2', mode='eval')
>>> x.body.left
<_ast.BinOp object at 0x100613210>
>>> x.body.right
<_ast.Num object at 0x100613590>
>>> x.body.op
<_ast.Div object at 0x10060d2d0>