在Python中计算eval()时,如何知道在某些中间步骤中是否得到余数?

2024-04-20 14:26:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串,类似于(4*1+3)/2,想用eval来计算答案。我怎么知道我是否会在某个中间步骤中得到余数?在这个例子中,我在最后一步得到一个余数,在这里我将计算7/2。你知道吗

假设所有参数都是整数,只允许操作数为+、-、*、/、(、)。你知道吗


Tags: 字符串答案参数eval步骤整数例子
3条回答

如果你这样做了

from __future__ import division

您将获得新的Python 3样式分区:

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

您将知道您在某处得到了一个余数,因为输出是float类型的。你知道吗

尝试使用^{}函数:

>>> 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>

如果什么都不适合您,您可以尝试一些自定义代码来计算中缀表达式。有关使用堆栈计算中缀表达式的信息,请参见example。或者看看这个blog上的一些代码。你知道吗

似乎没有库、模块或组件可以帮助您完成您想做的事情。你可能得自己写。你知道吗

相关问题 更多 >