0

のような文字列があり、答えを評価する(4*1+3)/2ために使用したいと考えています。eval中間ステップで残りが得られるかどうかはどうすればわかりますか? この場合、最後のステップで剰余を得て、7/2 を評価します。

すべての引数が整数であり、許可されるオペランドは +、-、*、/、(、) のみであると想定します。

4

3 に答える 3

1

もしあなたがそうするなら

from __future__ import division

新しい Python 3 スタイルの分割が得られます。

>>> eval("(4*1+3)/2")
3.5

出力のタイプが であるため、どこかに剰余があることがわかりますfloat

于 2013-05-08T08:49:39.317 に答える
1

関数を使用してみてください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>
于 2013-05-08T08:50:04.583 に答える
0

何もうまくいかない場合は、カスタム コードを試して、中置式を評価することができます。stack を使用して中置式を評価するを参照してください。または、このブログのコードを確認してください。

あなたがやりたいことを支援するライブラリ、モジュール、またはコンポーネントがないようです。自分で書く必要があるかもしれません。

于 2013-05-08T08:53:59.790 に答える