Sempatik bir mantıksal ifadeden eşdeğer C kodunu almak istiyorum. İlk olarak, and
ve or
gibi yerel mantıksal operatörleri kullanamayacağınızı fark ettim çünkü semptom bir şekilde onları kesiyor. Yeterince adil, &
and friends var. BenSympy: Mantıksal ifadeden C kodu
TypeError: The first argument must be a sympy expression.
Herhangi ipuçları alıyorum,
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")
ama nedense
çalıştı?
Sympy 've' ve 'veya' off'ını çıkarmaz. Bu operatörler Python'da “kodlanmış” ve türlere göre aşırı yüklenemezler, bu yüzden Python bunları çalıştırmaya çalışır ve bu da başarısız olur veya istediğiniz sonucu vermez. – BlackJack
@Nico - Cevabımı silmek istiyorum. Lütfen bunu doğru olarak işaretleyebilir misiniz? –