我有一个字符串,类似于(4*1+3)/2
,并想用它eval
来评估答案。我怎么知道我是否会在某个中间步骤中得到余数?在这种情况下,我在最后一步得到一个余数,我将评估 7/2。
假设所有参数都是整数,并且唯一允许的操作数是 +、-、*、/、(、)。
我有一个字符串,类似于(4*1+3)/2
,并想用它eval
来评估答案。我怎么知道我是否会在某个中间步骤中得到余数?在这种情况下,我在最后一步得到一个余数,我将评估 7/2。
假设所有参数都是整数,并且唯一允许的操作数是 +、-、*、/、(、)。
尝试使用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>
如果你这样做
from __future__ import division
您将获得新的 Python 3 风格的划分:
>>> eval("(4*1+3)/2")
3.5
你会知道你在某处有余数,因为输出是 type float
。