0

我有一个字符串,类似于(4*1+3)/2,并想用它eval来评估答案。我怎么知道我是否会在某个中间步骤中得到余数?在这种情况下,我在最后一步得到一个余数,我将评估 7/2。

假设所有参数都是整数,并且唯一允许的操作数是 +、-、*、/、(、)。

4

3 回答 3

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 回答
1

如果你这样做

from __future__ import division

您将获得新的 Python 3 风格的划分:

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

你会知道你在某处有余数,因为输出是 type float

于 2013-05-08T08:49:39.317 回答
0

如果对您没有任何帮助,您可以尝试一些自定义代码来评估中缀表达式。请参阅使用堆栈评估中缀表达式的示例。或查看此博客上的一些代码。

似乎没有库、模块或组件可以帮助您完成您想做的事情。您可能必须自己编写。

于 2013-05-08T08:53:59.790 回答