我希望能从sympy的逻辑表达式中得到相应的C代码。首先,我注意到你不能使用原生的逻辑运算符,如and
和or
,因为sympy会将其过滤掉。没关系,现在可以使用&
和相关函数了。我尝试了
from sympy import *
from sympy.utilities.codegen import codegen
x = Symbol('x')
is_valid = Symbol('is_valid')
# f = x > 0 and is_valid # TypeError: cannot determine truth value of
f = (x > 0) & is_valid # And(is_valid, x > 0)
# TypeError: The first argument must be a sympy expression.
[(c_name, c_code), (h_name, c_header)] = codegen(("f", f), "C")
但是出现了某些问题,我得到了以下错误信息:
有什么提示吗?TypeError: 第一个参数必须是 sympy 表达式。
and
和or
。这些运算符在Python中是“硬编码”的,无法被类型重载,因此Python尝试执行它们,但会失败或产生您不想要的结果。 - BlackJack