Python - eval 方法不需要除以零

问题描述 投票:0回答:2

我想使用Python的eval函数来计算下面的公式:

eval(nvl(a, b))

简而言之,我想检查两个单独的数学表达式,并在

a
为 0 的情况下选择第二个。

nvl
是我的自定义函数,如下所示:

def nvl(a, b):

    try:
        evaluated = eval(a)
    except:
        evaluated = 0

    if evaluated == 0:
        return eval(b)
    else:
        return evaluated

每当第一个表达式抛出异常时,我就会陷入困境,例如如果

a
0/0
那么我的
eval(nvl(0/0, 1))
会抛出异常而不是返回
1

有什么方法可以改变这种行为并强制 eval 简单地执行我的方法而不是评估每个参数?

python eval
2个回答
0
投票

它甚至没有达到你的尝试,除非你的除法在函数的参数中

尽你的努力,除了你在哪里做你的除法。因此你必须给你的函数提供像

这样的商
def nvl(a, b):
    ...
    return evaluated


try:
    quotient = a  # whatever your a is
    evaluated = nvl(a, b)
except ZeroDivisionError:
    evaluated = 0

-1
投票

我认为你的尝试:除了:其他:有点错误:

看下面的代码。这是你期望发生的事情吗?

def nvl(a, b):

    try:
        evaluated = eval(a)
    except:
        return eval(b)

    else:
        return evaluated

print(nvl("1/3","1"))
© www.soinside.com 2019 - 2024. All rights reserved.