如何在python for infix中测试错误的表达式


def main1(expr):
if expr(eval) raise ValueError:
raise ValueError("Not a correct expression")
main1((8+3)*(5-6)))

所以,我的参数是:(8+3(*(5-6(

然而,我故意在上面加上另一个括号,使这个中缀表达式无效。

在我的代码中,有没有一种方法可以做到这一点,它试图对其进行评估,如果它运行错误,则引发一个Value错误,声明它不是有效的输入?

您想要的是一个try-catch。

尽管说实话,没有充分的理由使用这个。引发的错误已经是语法错误,如果语法错误,则用户会期望出现这种错误。

更好的方法可能是:

def main1(expr):
try:
eval(expr)
except SyntaxError:
#logger.error("This is not a correct expression")
print("This is not a correct expression")
raise

或者,如果你已经下定决心,这应该是你想要的。

def main1(expr):
try:
eval(expr)
except SyntaxError:
raise ValueError("Not a correct expression")
main1("(8+3)*(5-6))")

最新更新